скопировать таблицу

Тема в разделе "Базы данных", создана пользователем sultan347, 4 апр 2010.

Статус темы:
Закрыта.
Модераторы: latteo
  1. sultan347

    sultan347

    Регистр.:
    25 апр 2009
    Сообщения:
    230
    Симпатии:
    7
    Как скопировать данные из tabl1 в tabl2 попутно умножив данные на коэффициент?
     
  2. venetu

    venetu

    Регистр.:
    28 мар 2007
    Сообщения:
    737
    Симпатии:
    263
    PHP:
    $query "SELECT * FROM tabl1";
    $res mysql_query($query);
    while(
    $arr mysql_fetch_array($res)) {
      
    $arr['some_field'] *= 0.75 // коэффициент
      
    $query "INSERT INTO tabl2 SET .....";
      
    mysql_query($query);
    }
    Чем спрашивать на форуме и ждать ответа как это сделать одним sql, уже б давно наваял бы подобный скриптик и забыл. :)
     
  3. Unabashed

    Unabashed Писатель

    Регистр.:
    19 апр 2009
    Сообщения:
    3
    Симпатии:
    0
    INSERT INTO имя_таблицы [(имена_столбцов, ...)] SELECT имена_столбцов, ... FROM имя_таблицы, ... [WHERE ...];
    Данные копируются в уже существующую таблицу.
    Например
    INSERT INTO tbl2 (field1,field2,field2) SELECT field1,5*field2,filed3 FROM tbl1
    Проверял на MySql.
     
  4. diavolic

    diavolic

    Регистр.:
    17 мар 2010
    Сообщения:
    522
    Симпатии:
    102
    PHP:
    CREATE TABLE tabl2 SELECT FROM tabl1;
    UPDATE tabl2 SET field2=field2*coeff;
     
    antNiX нравится это.
  5. diavolic

    diavolic

    Регистр.:
    17 мар 2010
    Сообщения:
    522
    Симпатии:
    102
    select CONCAT(ПРОИЗВОДИТЕЛЬ,МАРКА) as ПОЛНОЕ_НАЗВАНИЕ from ТАБЛИЦА

    копай короче в сторону CONCAT
     
  6. Chance55

    Chance55 Постоялец

    Регистр.:
    2 мар 2010
    Сообщения:
    100
    Симпатии:
    6
    Нужно еще чтобы общая длина нового поля не превышала допустимые размеры.
     
  7. diavolic

    diavolic

    Регистр.:
    17 мар 2010
    Сообщения:
    522
    Симпатии:
    102
    Код:
    select LEFT(CONCAT(ПРОИЗВОДИТЕЛЬ,МАРКА), МАКСИМАЛЬНАЯ_ДЛИНА_ПОЛЯ) as ПОЛНОЕ_НАЗВАНИЕ from ТАБЛИЦА
     
  8. shvonder_85

    shvonder_85 Создатель

    Регистр.:
    3 май 2010
    Сообщения:
    12
    Симпатии:
    3
    Можно объединить код Unabashed и diavolic и сделать создание и заполнение одним запросом:

    CREATE TABLE tabl2 SELECT field1,5*field2,filed3 FROM tbl1;
     
Статус темы:
Закрыта.