Supposons que j'ai deux tables distinctes que je regarde pour interroger. Ces deux tables ont une relation avec une troisième table. Comment puis-je interroger les deux tables avec une requête unique, non basée sur UNION?Comment puis-je effectuer cette requête entre des tables liées sans utiliser UNION?
Voici un exemple théorique. J'ai une table d'utilisateur. Cet utilisateur peut avoir à la fois des CD et des livres. Je veux trouver tous les livres et les CD de cet utilisateur avec une seule requête correspondant à une chaîne ("génial" dans cet exemple).
Une UNION requête basée pourrait ressembler à ceci:
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
Comment puis-je effectuer une requête comme celui-ci sans l'Union? Si je fais une simple jointure à gauche de l'utilisateur vers des livres et des CD, nous obtenons un nombre total de résultats égal au nombre de cds correspondant au nombre de livres correspondants. Existe-t-il un GROUP BY ou un autre moyen d'écrire la requête pour résoudre ce problème?
(EDIT: La raison pour laquelle je voudrais éviter l'approche de l'Union est parce que c'est une requête DQL et que Doctrine ne supporte pas UNION.Si ce n'est pas possible sans UNION, je vais utiliser la route SQL native En outre, la requête réelle contient un tas de colonnes supplémentaires qui ne se correspondent pas dans l'exemple ci-dessus.)
Qu'est-ce qui ne va pas avec l'approche UNION? –
et que voulez-vous dire en comparant un champ sur chaque table – Mark
Je suis d'accord avec KM. Si vous considérez les tables comme un ensemble de livres et un ensemble de CD (comme vous le devriez), il devrait être assez simple de voir qu'une union des deux ensembles (dans votre exemple) est plus appropriée. –