Я пытаюсь добавить несколько первичных ключей из разных таблиц в качестве внешних ключей в одну главную таблицу в запросе в 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» я хочу заменить существующим Первичным ключом из других таблиц в моей базе данных.
Как это возможно ?
Вы можете использовать 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
заявление.
Давным-давно я задал этот вопрос. Наконец-то я нашел время, чтобы ответить на него, если у кого-то возникнет такая же проблема. Не знаю, почему я хотел сделать это так сложно. Подзапросы, где ответ:
$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...)))