Недавно я задал этот вопрос.
У меня есть реляционная база данных с тремя таблицами. Первый содержит идентификаторы, относящиеся ко второму. Второй содержит идентификаторы, относящиеся к третьему. Третий содержит результаты, которые мне нужны.
Можно ли с помощью одного запроса запросить идентификатор в первой таблице, который дает все результаты из третьей таблицы, относящиеся к ней?
Я выбрал следующее решение:
выберите * из таблицы 1 t1 присоединиться к таблице 2 t2 на t1.t2ref = t2.id присоединиться к таблице 3 t3 на t2.t3ref = t3.id
Добавьте предложение where для поиска определенных строк в таблице 1.
где t1.field = 'значение'
Мой новый вопрос:
Я понял, что мне нужно вставить в три таблицы тоже. Я имею дело с системой бронирования. Можно ли написать запрос, который вставляется в три таблицы сразу после их запроса (с использованием соединений?).
Также у меня есть еще одно соображение: следует ли использовать транзакции, чтобы гарантировать, что два запроса выполняются одновременно... оба обнаруживают, что идентификаторы «незарезервированы», а затем приводят к двойному бронированию или есть более простой способ?