[英]SQL query for multiple (one-to-many) tables in mysql database
我有一个旅游数据库(带导游的团体城市旅游)。 我需要的是一个SQL查询(对于mysql 5.1.54数据库),最终将给我一个PHP数组,其中包含来自多个表的信息。 我可以通过仅对前3个表进行查询,然后在foreach循环中在表4和5中添加信息来完成此操作。
但是,我需要使用查询进行搜索/过滤(例如:在伙伴ID为9的地方显示所有保留),因此我需要SQL来选择相应的保留。
数据库的简化版本:
表1:保留:
id id_client id_tour
1 22 6
2 23 5
表2:客户(一个预订有一个客户):
id name
22 John
23 William
表3:旅行(一项预订有一项旅行)
id name
5 big tour
6 small tour
表4:合作伙伴(一个预订可以有多个合作伙伴):
id id_reservation id_partner_type id_partner status
34 1 9 16 1
35 1 9 17 0
表5:指南(一个预订可以有多个指南):
id id_reservation id_guide
18 1 14
19 1 15
我已经尝试解决此问题,但是我无法获得执行此任务的查询。 我使用GROUP_CONCAT获取多个合作伙伴和指南ID。 我遇到的最大问题是无法包含没有合作伙伴和/或指南的预订,例如预订2。
要包括没有合作伙伴和指南的所有预订,您需要使用OUTER JOINs
,例如,以下查询将为您提供表4,表5中的所有信息,包括您的条件:
Select p.*, g.*
from reservations r
left outer join partners p on p.id_reservation = r.id
left outer join guides g on g.id_reservation = r.id
where p.id_reservation is null and g.id_reservation is null
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.