blackdarthvader
@blackdarthvader
Только учусь кодить ^_^

Как сделать запрос к 3 таблицам с условием where?

Здравствуйте, есть три таблицы table_1, table_2, table_3
Мне нужно 1 запросом забирать данные сразу из трех таблиц, но с условием поиска данных по столбцу item_id, который присутствует сразу в 3 таблицах. У меня получилось вывести данные, но я столкнулся с проблемой, если в одной из таблиц отсутствует item_id, то поиск не срабатывает, я не очень хорошо знаю синтаксис и операторы MYSQL, поэтому для меня это огромная проблема.

То есть, мне нужно сделать поиск по item_id (item_id мне всегда известна) в трех таблицах table_1, table_2, table_3 и вывести значения этих столбцов deal_id, track_id, waybill_id, если они конечно есть.

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

Я написал такой запрос, он работает
select t1.item_id, t1.deal_id, t2.track_id, t3.waybill_id
	from table_1 as t1 
	join table_2 as t2 on t2.item_id = t1.item_id 
	join table_3 as t3 on t3.item_id = t1.item_id 
	where t1.item_id = '9026'

Чтобы проверить поиск где не срабатывает поиск попробуйте это
select t1.item_id, t1.deal_id, t2.track_id, t3.waybill_id
	from table_1 as t1 
	join table_2 as t2 on t2.item_id = t1.item_id 
	join table_3 as t3 on t3.item_id = t1.item_id 
	where t1.item_id = '9041'

Посмотреть онлайн можно тут https://paiza.io/projects/l0kYgCromPmHD_gGjf5PrQ?l...
  • Вопрос задан
  • 93 просмотра
Решения вопроса 1
@dimoff66
Кратко о себе: Я есть
select ids.id, t1.deal_id, t2.track_id, t3.waybill_id from 
(select '9014' as id) as ids
  left join table_1 as t1 on ids.id = t1.item_id 
  left join table_2 as t2 on ids.id = t2.item_id 
  left join table_3 as t3 on ids.id = t3.item_id


Либо если без отбора, то
select ids.id, t1.deal_id, t2.track_id, t3.waybill_id from
(select t1.item_id as id from table_1 union  t2.item_id from table_2 union  t3.item_id from table_3) as ids
  left join table_1 as t1 on ids.id = t1.item_id 
  left join table_2 as t2 on ids.id = t2.item_id 
  left join table_3 as t3 on ids.id = t3.item_id
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Melkij
@Melkij
PostgreSQL DBA
По одному полю с таблицы проще подзапросом.
select 
  (select deal_id from table_1 where item_id = 9041) as deal_id_1
  (select deal_id from table_2 where item_id = 9041) as deal_id_2
  (select deal_id from table_3 where item_id = 9041) as deal_id_3
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы