MySQL Query Problem - Объединения и группировка - PullRequest
2 голосов
/ 24 августа 2011

Я репостирую эту проблему более простым способом, поскольку я получаю комментарии о ее слишком конкретной информации:

Основываясь на следующих отношениях модели путешествия, как выбрать все Маршруты хотя бы с одним Стоп в Регион 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

Ответы [ 3 ]

1 голос
/ 24 августа 2011
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
      ) 
0 голосов
/ 24 августа 2011
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)
0 голосов
/ 24 августа 2011

выберите * из маршрута, где существует (выберите * из маршрута, где остановка = X);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...