MYSQL Вставить первичный ключ в другую таблицу в качестве внешнего ключа

Я пытаюсь добавить несколько первичных ключей из разных таблиц в качестве внешних ключей в одну главную таблицу в запросе в php.

Пока что я получил:

$result=$mysqli->query("INSERT INTO m_main (M_Id, M_T_Id,  M_U_Id, M_P_Id, M_S_Id, M_Sp_Id, M_Ra_Id, M_F_Id, M_Hp, M_Rss, M_Kommentar)". "VALUES (DEFAULT, 123,  123, '".$_SESSION['sId']."' , 123, '".$_SESSION['Sp_Id']."', '".$_POST['fragestellung']."', 123,". "'".$_POST['hp']."', $rss, '".$_POST['kommentar']."')");

Каждый «123» я хочу заменить существующим Первичным ключом из других таблиц в моей базе данных.
Как это возможно ?

1

Решение

Вы можете использовать INSERT ... SELECT синтаксис.

Как то так где anotherTable это другая таблица, из которой вы хотите вставить.

$result=$mysqli->query("INSERT INTO m_main (M_Id, M_T_Id,  M_U_Id, M_P_Id, M_S_Id, M_Sp_Id, M_Ra_Id, M_F_Id, M_Hp, M_Rss, M_Kommentar) ". "SELECT (DEFAULT, anotherTable.id,  anotherTable.id, '".$_SESSION['sId']."' , anotherTable.id, '".$_SESSION['Sp_Id']."', '".$_POST['fragestellung']."', anotherTable.id,". "'".$_POST['hp']."', $rss, '".$_POST['kommentar']."') FROM anotherTable");

При необходимости вы также можете ограничить количество вставляемых строк в m_main с WHERE пункт в SELECT заявление.

1

Другие решения

Давным-давно я задал этот вопрос. Наконец-то я нашел время, чтобы ответить на него, если у кого-то возникнет такая же проблема. Не знаю, почему я хотел сделать это так сложно. Подзапросы, где ответ:

$result=$mysqli->query("INSERT INTO m_main (M_Id, M_T_Id,  M_U_Id, M_P_Id, M_S_Id, M_Sp_Id, M_Ra_Id, M_F_Id, M_Hp, M_Rss, M_Kommentar)". "VALUES (DEFAULT, (SELECT MAX id FROM title), (((AND SO ON...)))
1

По вопросам рекламы [email protected]