Давайте представим, что у меня есть 2 таблицы в MySQL, одна называется Vehicle, а другая — Passenger.
Если мне нужен полный список всех транспортных средств и их пассажиров, я могу сделать что-то вроде этого:
SELECT *
FROM Vehicle v
LEFT
JOIN Passenger p
ON p.VehicleID = v.VehicleID
LIMIT 0,100
Проблема здесь в том, что давайте представим, что мои транспортные средства — это автобусы, и в первом автобусе 50 пассажиров, во втором автобусе — 40, а в третьем — 30. Ограничение 100 в приведенном выше запросе даст мне частичный список пассажиров третьего автобуса.
Есть ли способ создать такой запрос, который не будет разделять результаты из объединенной таблицы?
Или же вы можете применить LIMITS отдельно к разным таблицам? Итак, я мог бы сказать, что хочу ограничиться 10 транспортными средствами и 50 пассажирами на транспортное средство?
Логически примерно так:
SELECT * FROM Vehicle (LEFT JOIN Passenger ON Passenger.VehicleID = Vehicle.VehicleID LIMIT 0,50) LIMIT 0, 10
Мне было интересно, можно ли этого добиться с помощью какого-то подзапроса? Может быть, что-то вроде:
SELECT *, (SELECT * FROM Passenger WHERE Passenger.VehicleID = Vehicle.VehicleID LIMIT 0,50) FROM Vehicle LIMIT 0, 10
Но это не работает (подзапрос может возвращать только одну строку).
Заранее спасибо.