Émuler MySQL FULL JOIN avec LEFT et RIGHT JOINS
MySQL ne prend pas en charge nativement les opérations FULL JOIN. Cependant, il est possible d'obtenir des résultats similaires en utilisant une combinaison de LEFT JOIN et RIGHT JOIN.
Comprendre le problème
L'objectif est de renvoyer un ensemble de résultats qui inclut tous les enregistrements des deux tables, Personnes et Commandes, même si les champs correspondants (P_Id) sont nuls dans l'un ou l'autre table.
Solution
Pour simuler un FULL JOIN, utilisez la requête suivante :
SELECT p.LastName, p.FirstName, o.OrderNo FROM Persons p LEFT JOIN Orders o ON p.P_Id = o.P_Id UNION ALL SELECT p.LastName, p.FirstName, o.OrderNo FROM Persons p RIGHT JOIN Orders o ON p.P_Id = o.P_Id WHERE p.P_Id IS NULL ORDER BY p.LastName;
Explication
Cette requête produit un ensemble de résultats identique à celui décrit dans l'énoncé du problème. :
LastName | FirstName | OrderNo |
---|---|---|
Hansen | Ola | 22456 |
Hansen | Ola | 24562 |
Pettersen | Kari | 77895 |
Pettersen | Kari | 44678 |
Svendsen | Tove | 34764 |
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!