|
Rejoindre plus de 3 tables dans SQL Server
Voici un exemple de rejoindre quatre tables dans SQL Server, ainsi que des explications:
Scénario: Imaginez une base de données pour une librairie:
* Clients: Stocke les informations client (CustomerId, FirstName, LastName, Email)
* ordres: Contient les détails de la commande (OrderId, CustomerId, OrderDate, TotalAmount)
* OrderItems: Énumére les éléments de chaque commande (OrderItemid, OrderId, Bookid, Quantity)
* Livres: Contient des informations sur chaque livre (bookid, titre, auteur, prix)
Objectif: Obtenez une liste de noms de clients, de dates de commande et des titres de livres qu'ils ont achetés.
`` SQL
SÉLECTIONNER
c.firstname,
c.lastname,
O.OrderDate,
B.Title comme livre
DEPUIS
Clients C
REJOINDRE
Ordres o sur c.CustomERID =O.CustomerId
REJOINDRE
Commanderms oi sur o.OrderId =oi.OrderId
REJOINDRE
Livres B sur oi.bookid =b.bookid
Commander
C.LastName, O.OrderDate;
`` '
Explication:
1. Sélectionner la clause: Spécifie les colonnes à récupérer (nom du client, date de commande, titre du livre).
2. de la clause: Répertorie les tableaux impliqués dans le jointure.
3. Rejoignez les clauses: Connectez des tables en fonction des colonnes communes.
* `Rejoignez les commandes o sur C.CustomerId =O.CustomERID`:connecte les` `clients 'et les' commandes 'sur la colonne` CustomerId`.
* `JOINT ORDERITEMS OI SUR O.ORDERID =OI.OrderId`:Connects` Orders` et `OrderItems` sur la colonne` OrderId`.
* `Rejoignez les livres B sur OI.BookId =B.BookId`:connecte` OrderItems` et «Books» sur la colonne «Bookid».
4. Ordre par clause: Trie les résultats par nom et date de commande du client.
Points clés:
* Types de joints: Vous pouvez utiliser différents types de jointures comme «gauche join», «jointure droite» ou «jointure complète» en fonction de vos exigences spécifiques.
* alias: L'utilisation d'alias (par exemple, «C» pour «clients») rend la requête plus lisible.
* Noms de colonne: Faites attention aux noms de colonne en double entre les tables. Utilisez des alias de table (par exemple, `b.title`) pour clarifier.
* Optimisation: Pour les requêtes complexes, envisagez d'utiliser des index sur les colonnes de jointure pour des performances améliorées.
Remarques supplémentaires:
* Cet exemple démontre une jointure de base à l'aide de plusieurs tables. Vous pouvez modifier la requête pour inclure plus de colonnes, de filtres ou de fonctions agrégées en fonction de vos besoins spécifiques.
* La clause `` Order by 'est facultative mais aide à organiser les résultats de manière significative.
N'hésitez pas à adapter cet exemple à votre propre schéma de base de données.
|