[英]MySQL Query Problem - Joins and Grouping
我以一种更简单的方式重新发布了这个问题,因为我收到有关它过于具体的评论:
根据以下旅行模型之间的关系,如何选择在X 区域中具有至少一个停靠点的所有行程 ,并且仍然让查询返回该行程的所有停靠点 ,即使其他停靠点不在 X以外的区域中
我正在使用Php,MySQL和Doctrine。
Region HAS MANY Country
Country HAS MANY Area
Area HAS MANY Property
Property HAS MANY Stop
Itinerary HAS MANY Stop
SELECT i.*
, sa.*
FROM Itinerary AS i
JOIN Stop AS sa
ON i.ItineraryId = sa.ItineraryId
WHERE EXISTS
( SELECT *
FROM Stop AS s
JOIN Property AS p
ON p.PropertyId = s.PropertyId
JOIN Area AS a
ON a.AreaId = p.AreaId
JOIN Country AS c
ON c.CountryId = a.CountryId
JOIN Region AS r
ON r.RegionId = c.RegionId
WHERE s.ItineraryId = i.ItineraryId
AND r.Name = @X
)
从EXISTS所在的路线中选择*(从stop = X的路线中选择*);
SELECT * from Itinerary where id in(
SELECT DISTINCT Itinerary.id
FROM Itinerary
LEFT JOIN Stop on Itinerary.something = Stop.something
LEFT JOIN Property ON Stop.something=Property.something
LEFT JOIN Area ON Area.something=Property.something
LEFT JOIN Country ON Country.something=Area.something
LEFT JOIN Region ON Region.something = Country.something
WHERE Region.something = X)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.