繁体   English   中英

MySQL查询问题-连接和分组

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM