Предположим, у меня есть две отдельные таблицы, которые я просматриваю для запроса. Обе эти таблицы имеют отношение к третьей таблице. Как я могу запросить обе таблицы с помощью одного запроса не на основе UNION?
Вот теоретический пример. У меня есть таблица пользователей. Этот пользователь может иметь как компакт-диски, так и книги. Я хочу найти все книги и компакт-диски этого пользователя с одним запросом, совпадающим со строкой (в этом примере «круто»).
Запрос на основе UNION может выглядеть так:
SELECT "book" AS model, name, ranking
FROM book
WHERE name LIKE 'Awesome%'
UNION
SELECT "cd" AS model, name, ranking
FROM cd
WHERE name LIKE 'Awesome%'
ORDER BY ranking DESC
Как я могу выполнить такой запрос без UNION? Если я сделаю простое левое соединение пользователя с книгами и компакт-дисками, мы получим общее количество результатов, равное количеству совпадающих компакт-дисков и числу совпадающих книг. Существует ли GROUP BY или какой-либо другой способ написания запроса, чтобы это исправить?
(РЕДАКТИРОВАТЬ: Причина, по которой я хотел бы избежать подхода Union, заключается в том, что на самом деле это запрос DQL, а Doctrine не поддерживает UNION. Если нет способа сделать это без UNION, я пойду по собственному пути SQL. Кроме того, реальный запрос содержит несколько дополнительных столбцов, которые не так хорошо сопоставляются друг с другом в приведенном выше примере.)