За последние 24 часа нас посетили 17504 программиста и 1281 робот. Сейчас ищут 1454 программиста ...

Копирование из одной таблицы в другую

Тема в разделе "PHP и базы данных", создана пользователем IvanNoFF, 15 ноя 2006.

  1. IvanNoFF

    IvanNoFF Активный пользователь

    С нами с:
    15 ноя 2006
    Сообщения:
    30
    Симпатии:
    0
    Добрался до живого форума

    Есть Table1 и Table1_History - абсолютно одинаковые структуры

    Надо из Table1 в Table1_History записать строку, шпарить програмно запрос муторно (много полей а конкретно 92)
     
  2. Anonymous

    Anonymous Guest

    IvanNoFF, одну строку? или много?
     
  3. IvanNoFF

    IvanNoFF Активный пользователь

    С нами с:
    15 ноя 2006
    Сообщения:
    30
    Симпатии:
    0
    Одну строку, я ее затем из первой удалю
     
  4. Anonymous

    Anonymous Guest

    Код (Text):
    1. INSERT INTO TABLE_HISTORY(SELECT * FROM TABLE WHERE {условие})
     
  5. IvanNoFF

    IvanNoFF Активный пользователь

    С нами с:
    15 ноя 2006
    Сообщения:
    30
    Симпатии:
    0
    вот мой запрос, он не работает
    Код (Text):
    1. insert into orderscomplete (oper, disp, ordertype, orderstate, preorder, roadside, phone, street, house, porch, apart, zonefrom, meet, addressfrom, addressto, streetto, houseto, zoneto, route, suburb, distance, distcity, distsuburb, client, clientname, prefcar, driver, drivershift, channel, ordertime, pretime, driverstart, driverwait, clientringup, driverload, completetime, endtask, cash, dcard, driveupprice, waitprice, puredriveprice, ordersum, paysum, discount, carddiscount, drvcharged, opercharged, dispcharged, info, legend_drv, legend_order, usecldiscount, cldbalance, drvbonus, msgid, waittime, waitingstart, oldnum, ordercompany, passenger, ordervendor, stopid)
    2. values (select oper, disp, ordertype, orderstate, preorder, roadside, phone, street, house, porch, apart, zonefrom, meet, addressfrom, addressto, streetto, houseto, zoneto, route, suburb, distance, distcity, distsuburb, client, clientname, prefcar, driver, drivershift, channel, ordertime, pretime, driverstart, driverwait, clientringup, driverload, completetime, endtask, cash, dcard, driveupprice, waitprice, puredriveprice, ordersum, paysum, discount, carddiscount, drvcharged, opercharged, dispcharged, info, legend_drv, legend_order, usecldiscount, cldbalance, drvbonus, msgid, waittime, waitingstart, oldnum, ordercompany, passenger, ordervendor, stopid from orders where num=68)
    там просто num есть - автоинкрементный в обоих таблицах, который мы из первой вов торую не перенесем по понятным причинам
     
  6. а зачем во второй таблице num автоинкрементный?
    и, как ты считаешь, какую информацию можно извлечь из твоего детального описания проблемы, заключенного в сакраментальную фразу "он не работает"?
     
  7. Anonymous

    Anonymous Guest

    логично. Уберита автоинкремент, за нужной цифрой все равно следит первая таблица.
     
  8. Вопрос "зачем вообще нужна таблица Table1_History" я задавать не буду.Местные посетители очень не любят, когда им задают вопросы, в которых ставятся под сомнение их гениальные
    таланты к проектированию приложений.
     
  9. IvanNoFF

    IvanNoFF Активный пользователь

    С нами с:
    15 ноя 2006
    Сообщения:
    30
    Симпатии:
    0
    Насчет гениальности фиг с ним, вопрос бы решился.

    На эту базу есть локальный клиент для оператора(Исходников у меня нет). Я решил преписать web-клиента для заказов ч/з интернет, посему менять структуру базы ниизя

    MySQLCC пишет ERROR 1064:You have an error in your SQL syntax. Chek... yr вобщем все то, что он пишет на ошибоки, которые не может найти. Так что мне к "он не работает" прибавить нечего
     
  10. ЧЕГО???
    как это - не может найти?! Он показывает место, в котором ошибка! Ровно в том месте, которое ты пропустил.
    Мало того, что ты пишешь запрос с ошибкой - то есть, проблема не в принципиальном поддходе, а всего лишь в кривой реализации.
    Мало того, что ты сам не можешь глаза разуть и прочитать сообщение об ошибке самостоятельно
    Мало того, что ты не приводишь сообщение об ошибке здесь, чтобы тебе его прочитали
    Так ты ещё и начинаешь выпендриваться когда тебе говорять привести здесь описание проблемы.
     
  11. topas

    topas Активный пользователь

    С нами с:
    16 авг 2006
    Сообщения:
    2.258
    Симпатии:
    36
    IvanNoFF
    могу предложить сделать два шага:
    SELECT ... FROM ... WHERE ....
    INSERT INTO ... (...) VALUES (...)
     
  12. возможно, в силу малого опыта, ты не различаешь понятия "он не работает" и " error in your SQL syntax".
    Но попробуй догадаться, что это немного разное описание проблемы.

    Ты не пробовал доктору звонить по телефону и говорить "я болен!". И требовать консультации?
    а потом ему ещё и доказывать, что ничего прибавить не можешь, а градусник сам не знает, что показывает.
     
  13. topas
    учи синтаксис mysql
    это делается одним запросом.
    и если у него ошибка синтаксиса в одном, то нет гарантии, что той же самой ошибки не будет в другом.

    Если есть ошибка, то надо её и исправлять.
    а не кривые костыли придумывать
     
  14. topas

    topas Активный пользователь

    С нами с:
    16 авг 2006
    Сообщения:
    2.258
    Симпатии:
    36
    Чебурген,
    покажи, а то, наверное, скучно быть умному среди дураков, может мой скверный ум (или его отсутствие) просветлеет.
     
  15. Нет, не скучно. А совсем наоборот =)

    IvanNoFF
    тебя это тоже, кстати, касается.
    попробуй заглянуть в документацию, на страницу описания запроса INSERT
    вдруг увидишь там что-то интересное.
     
  16. IvanNoFF

    IvanNoFF Активный пользователь

    С нами с:
    15 ноя 2006
    Сообщения:
    30
    Симпатии:
    0
    Примите мои извинения господин Чебурген
    Вот полный вариант сообщения об ошибке, полученный после попытки выполнить этот запрос на MySqlControlCenter

    [user@localhost:3306] ERROR 1064: You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'select oper, disp, ordertype, orderstate, preorder, roadside, p

    Если вы подскажете мне, где мне найти остальную часть ошибки, буду вам благодарен (Это не шутка)

    select отдельно выдернутый работает нормально, а поля в обоих перечислениях идентичны, их правильность неоспорима, так как взята из дампа инсерта для этих таблиц.
     
  17. подскажу. ошибка начинается с того места, которое цитирует сообщение. Именно так следует понимать сообщения об ошибке синтаксиса MySQL - она пишет первые слова, которые она не поняла.
    Я очень сомневаюсь в твоей благодарности, поскольку ты проигнорировал два замечания, которые я считаю весьма существенными.
    1. про наличие атрибута автоинкремент во второй табьлице.
    впрочем, он не мешает. но непонятно, зачем ты перечисляешь поля вручную вместо того, чтобы выбрать звёздочку.
    2. про существование таблицы hisory.
    Я - профессионал.
    И я не люблю, когда к моим словам относятся, как пению птички.
    Если ты считаешь мои замечания несущественными - то не надо тогда вообще просить никаких пояснений.
     
  18. IvanNoFF

    IvanNoFF Активный пользователь

    С нами с:
    15 ноя 2006
    Сообщения:
    30
    Симпатии:
    0
    Это ответ на то, зачем таблица хистори и зачем там автоинкремент, а точнее почему я не могу от них избавиться

    я на форуме всего несколько часов как зарегестрирован,но уже успел получить дельный ответ на интересующий вопрос (см предыдущую тему) , так что в профессианализме форумчан, а конкретно тебя я не сомневаюсь
     
  19. ещё скажи, что id записей в этих таблицах не совпадают?
     
  20. IvanNoFF

    IvanNoFF Активный пользователь

    С нами с:
    15 ноя 2006
    Сообщения:
    30
    Симпатии:
    0
    Они действительно не совпадают
     
  21. IvanNoFF

    IvanNoFF Активный пользователь

    С нами с:
    15 ноя 2006
    Сообщения:
    30
    Симпатии:
    0
    Еслиб они совпадали тогда б я просто взял insert и select без перечислений
     
  22. интересно, что росло вместо головы у того человека, который это "проектировал"...

    короче.
    синтаксис запроса, который работает гарантированно, описан в документации по INSERT
    документация находится на сайте dev.mysql.com
    на сайте mysql.ru есть русский перевод.
     
  23. Anonymous

    Anonymous Guest

    IvanNoFF, возможно, вам стоит генерировать запрос скриптом?
    В какой из тавлиц у вас избыточная информация? В History или самой таблице?
     
  24. IvanNoFF

    IvanNoFF Активный пользователь

    С нами с:
    15 ноя 2006
    Сообщения:
    30
    Симпатии:
    0
    Всем большее сорри я по скудоумию вместо
    Код (Text):
    1. insert into orderscomplete (...) select ... from orders where ....
    написал
    Код (Text):
    1. insert into orderscomplete (...) [b]values[/b] (select ... from orders where ....)
    Дико извеняюсь, обещаю покрыть себя позором и не пить сегодня после работы пиво (Чебурген - Грязевые ванны рулят - в смысле спасиб)