Как вставить, если мне нужно подобрать Primary id для другой таблицы - PullRequest
0 голосов
/ 22 октября 2009
SELECT * FROM tableFoo
LEFT JOIN tableBar ON tableFoo.commonColumn = tableBar.commonColumn
WHERE tableBar.commonColumn IS NULL

выше будет выбирать записи, я хотел бы вставить Приведенный ниже код вставит идентификатор в третью таблицу.

INSERT IGNORE INTO jos_mt_links (link_id,link_name,alias)
VALUES(NULL,'tex2','hello');         # generate ID by inserting NULL
INSERT INTO jos_mt_cl (link_id,cat_id)
VALUES(LAST_INSERT_ID(),'88');  # use ID in second table

Как мне их объединить? Thx

Опять же, я добавляю сюда эту заметку, как мне объединить эти запросы с другими. Все они, включая первый запрос (SELECT * ....)

Примерно так: ВЫБЕРИТЕ записи, затем вставьте их, а также вставьте это ....

Ответы [ 2 ]

4 голосов
/ 22 октября 2009

если вы используете php, вы можете просто сделать два запроса с mysql_insert_id () между

mysql_query("INSERT IGNORE INTO jos_mt_links (link_id,link_name,alias)
VALUES(NULL,'tex2','hello')");
$newid=mysql_insert_id();
mysql_query("INSERT INTO jos_mt_cl (link_id,cat_id)
VALUES(LAST_INSERT_ID(),'".$newid."')");

re: comment - извините, всего пропустили, поэтому вам нужно выполнить 3 запроса

$result=mysql_query("SELECT * FROM tableFoo LEFT JOIN tableBar ON tableFoo.commonColumn = tableBar.commonColumn WHERE tableBar.commonColumn IS NULL");
$row=mysql_fetch_assoc($result);
mysql_query("INSERT IGNORE INTO jos_mt_links (link_id,link_name,alias)
    VALUES(NULL,'".$row['linkfield']."','".$row['aliasfield']."')");
mysql_query("INSERT INTO jos_mt_cl (link_id,cat_id)
    VALUES(LAST_INSERT_ID(),'".$row['catidfield']."')");

Я не знаю, как называются ваши поля в tableFoo и tableBar, поэтому просто замените linkfield / aliasfield / catidfield этими именами.

0 голосов
/ 22 октября 2009

Курсор идеально подходит для этого. проверьте этот простой пример

http://www.kbedell.com/2009/03/02/a-simple-example-of-a-mysql-stored-procedure-that-uses-a-cursor/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...