met meer dan 3 tabellen in SQL Server
Hier is een voorbeeld van het samenvoegen van vier tabellen in SQL Server, samen met uitleg:
scenario: Stel je een database voor voor een boekhandel:
* klanten: Slaat klantinformatie op (CustomerID, FirstName, LastName, E -mail)
* Bestellingen: Bevat bestelgegevens (orderID, CustomerID, OrderDate, TotalAMount)
* OrderItems: Geeft items in elke bestelling weer (orderItemid, orderID, bookId, kwantiteit)
* boeken: Bevat informatie over elk boek (BookId, titel, auteur, prijs)
Doelstelling: Koop een lijst met klantnamen, besteldata en de titels van boeken die ze hebben gekocht.
`` `SQL
Uitkiezen
C.FirstName,
C.LastName,
O.OrderDate,
b.title als booktitle
VAN
Klanten c
MEEDOEN
Bestellingen O op C.Customerid =O.Customerid
MEEDOEN
OrderItems oi op o.orderid =oi.orderid
MEEDOEN
Boeken b op oi.bookid =b.bookid
Bestellen door
C.LastName, O.OrderDate;
`` `
Verklaring:
1. Selecteer Clausule: Geeft de kolommen op om op te halen (klantnaam, besteldatum, boektitel).
2. van clausule: Geeft de tafels weer die betrokken zijn bij de join.
3. Doe mee met clausules: Verbind tabellen op basis van gemeenschappelijke kolommen.
* `Bewaar bestellingen o op c.Customerid =o.Customerid`:verbindt` klanten` en `bestellingen` op de kolom 'CustomerID'.
* `Bewaar bestelling Items oi op O.OrderId =oi.orderid`:verbindt` orders` en `orderItems` op de kolom` orderid`.
* `Boeken aan bij oi.bookid =b.bookid`:verbindt` orderItems` en `boeken 'op de kolom' bookId '.
4. Bestel op clausule: Sorteert de resultaten op de achternaam van de klant en besteldatum.
Sleutelpunten:
* Join -typen: U kunt verschillende join -types gebruiken, zoals `links join`,` rechts join` of `volledige join`, afhankelijk van uw specifieke vereisten.
* aliassen: Het gebruik van aliassen (bijv. `C` voor 'klanten') maakt de query leesbaarder.
* kolomnamen: Wees voorzichtig met dubbele kolomnamen over tabellen. Gebruik tabelaliassen (bijv. `B.title`) om te verduidelijken.
* Optimalisatie: Overweeg voor complexe query's indexen op de Join -kolommen te gebruiken voor verbeterde prestaties.
Aanvullende opmerkingen:
* Dit voorbeeld toont een basisverbinding met behulp van meerdere tabellen. U kunt de query wijzigen om meer kolommen, filters of geaggregeerde functies op te nemen op basis van uw specifieke behoeften.
* De clausule `Order By` is optioneel, maar helpt de resultaten op een zinvolle manier te organiseren.
Voel je vrij om dit voorbeeld aan te passen aan je eigen databaseschema. |