Вставьте значения в соединительную таблицу

У меня есть три таблицы в базе данных:

 trips(trip_id(pk), trip_name(unique), user_id(fk))

places(place_id(pk), place_name(unique))

trips_places_asc(trip_id(fk), place_id(fk))

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

Теперь, если пользователь вставит места в поездку, места будут добавлены в places стол и поездка будут связаны с местами в trips_places_asc Таблица.

Итак, если я напишу запрос, как:

INSERT INTO places (place_name)
VALUES ('XYZ')

INSERT INTO trips (trip_name)
VALUES ('MyTrip')

Тогда, как хранить trip_id а также place_id в таблице соединения или ассоциации trips_places_asc?
мне придется запустить два запроса? Пожалуйста, помогите.

Замечания: Есть много вопросов по таким, как этот а также этот. но ни один из них не принял ответ или даже не ответил. Итак, плз не помечается как дубликат.

0

Решение

Так как у вас есть place_name а также trip_name так же уникально просто сделай как:

insert into  trips_places_asc ( trip_id, place_id )
values (  (select trip_id from trips where trip_name = 'MyTrip'),
(select place_id from places where place_name = 'XYZ') );

Или, в зависимости от того, какую команду вы используете для вставки (я имею в виду команду php), вы можете вернуть идентификаторы после вставок и использовать их для запуска команды вставки.

Это будет похоже на: (с использованием функций mysqli *)

$query = "INSERT INTO trips (trip_name) values ('MyTrip')";
$mysqli->query($query);
$trip_id = $mysqli->insert_id;

$query2 = "INSERT INTO places (place_name) values ('XYZ')";
$mysqli->query($query2);
$place_id = $mysqli->insert_id;

$query3 =  "insert into trips_places_asc ( trip_id, place_id ) ";
$query3 .= " values ($trip_id, $place_id)";

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

РЕДАКТИРОВАТЬ
Хотя я должен добавить соответствующую ссылку на документацию об этой команде: http://php.net/manual/en/mysqli.insert-id.php

5

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

Других решений пока нет …

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