Datenbanken
Heute dreht sich alles um SQL-Abfragen mit JOINS
Musterlösung
Mit JOINS kannst du Tabellen miteinander verknüpfen...
Aufgaben
- Gib die hier aufgeführten SQL Befehle selbst ein und schau dir die Ergebnisse an.
- Schreibe eine Query, die anzeigt, aus wie vielen unterschiedlichen Ländern Lieferanten kommen, die Produkte liefern.
- Wie viele Lieferanten kommen aus einer Stadt, die mit "B" beginnt? Macht es einen Unterschied, ob du das "b" groß oder klein schreibst?
Probiere weitere Abfragen aus. Der SQL Spickzettel hilft dir dabei.
Zeigt an, wie viele Lieferanten aus unterschiedlichen Ländern Produkte liefern.
17 Länder
Mögliche Lösung:
Zeigt an, wie viele Lieferanten aus einer Stadt kommen, die mit "B" oder "b" beginnt und die Produkte liefern.
8 Lieferanten
Bei Like wird Groß- und Kleinschreibung nicht
berücksichtigt
www.appcamps.de
SELECT COUNT (DISTINCT Suppliers.Country) FROM Products JOIN Suppliers ON Products.supplierid = Suppliers.supplierid
SELECT COUNT (*) FROM Products JOIN Suppliers ON Products.supplierid = Suppliers.supplierid WHERE Suppliers.city LIKE 'B%'
SELECT COUNT (*) FROM Products JOIN Suppliers ON Products.supplierid = Suppliers.supplierid WHERE Suppliers.city LIKE 'b%'
Mit JOINS kannst du Tabellen miteinander verknüpfen...
Aufgaben
- Gib die hier aufgeführten SQL Befehle selbst ein und schau dir die Ergebnisse an.
- Erstelle eine Query, in der du dir den Produktnamen, den Kategorienamen und die Beschreibung der Kategorie mit ausgeben lässt.
Probiere weitere Abfragen aus. Der SQL Spickzettel hilft dir dabei.
Erstellt eine Join zwischen den Tabellen Products und Categories.
Gibt den Produktnamen, den Kategorienamen und die Beschreibung der Kategorie aus.
Mögliche Lösung:
www.appcamps.de
SELECT Products.productname, Categories.categoryname, Categories.description FROM Products JOIN Categories ON Products.categoryid = Categories.categoryid
Mit JOINS kannst du Tabellen miteinander verknüpfen...
Aufgaben
- Gib die hier aufgeführten SQL Befehle selbst ein und schau dir die Ergebnisse an.
- Was passiert, wenn du bei der ersten Abfrage nicht nach den unterschiedlichen Spediteuren gruppierst? Ergibt die Ausgabe dann noch Sinn?
- Lass dir bei der zweiten Ausgabe nur die MitarbeiterInnen anzeigen, deren Vorname mit M beginnt. Der SQL Spickzettel hilft dir dabei.
-
Mache dir Gedanken dazu, ob es vielleicht auch andere Arten von JOINS geben könnte. Eine sehr schwierige Frage, zerbrich dir nicht den Kopf ... aber Folgendes soll dir als Anregung dienen:
- Angenommen nicht jedem Produkt ist ein Lieferant zugewiesen. Wird das Produkt dann angezeigt?
Auf der nächsten Seite findest du mögliche Antworten. Überlege aber zuerst selbst, bevor du weiter klickst.
Ergibt nicht wirklich Sinn. Zeigt die Anzahl aller Bestellungen (31) und den ersten Spediteur (Speedy Express) in einer Zeile an. Der Leser bekommt den Eindruck, dass der Spediteur 31 Bestellungen betreut.
Mögliche Lösung:
Zeigt alle MitarbeiterInnen, deren Vorname mit "M" beginnt und die mehr als 10 Bestellungen verwalten.
www.appcamps.de
SELECT COUNT (Orders.orderid), Shippers.shippername FROM Orders JOIN Shippers ON Orders.shipperid = Shippers.shipperid
SELECT Employees.lastname, COUNT (Orders.orderid) AS 'Anzahl_Bestellungen' FROM Orders JOIN Employees ON Orders.employeeid = Employees.employeeid WHERE Employees.firstname LIKE 'm%' GROUP BY Employees.lastname HAVING COUNT ('Anzahl Bestellungen') > 10
Mit JOINS kannst du Tabellen verknüpfen.
Aufgaben
- Gib die hier aufgeführten SQL Befehle selbst ein und schau dir die Ergebnisse an.
- Ob du bei SQL JOIN oder INNER JOIN in die Abfrage tippst, ist das Gleiche. Probiere es gleich mal aus!
- Kannst du auch einen JOIN von der Tabelle Suppliers zu Products, statt wie hier von Products zu Suppliers, herstellen? Erhälst du bei einem Left Join dann das gleiche Ergebnis wie zuvor?
Mögliche Lösung:
Bei einem INNER JOIN zwischen Suppliers und Products besteht kein Unterschied, ob dieser von Products zu Suppliers oder andersherum erstellt wird. Wenn hingegen ein LEFT JOIN erstellt wird, macht es einen Unterschied.
Bei einem LEFT JOIN von Products zu Suppliers werden alle gewünschten Spalten aus der Produkte-Tabelle angezeigt, auch wenn es keinen Eintrag in der Suppliers-Tabelle gibt. Die Zelle in der Suppliers-Tabelle hat dann den Wert NULL.
Bei einem LEFT JOIN von Suppliers zu Products werden alle gewünschten Spalten aus der Suppliers-Tabelle angezeigt, auch wenn es keinen Eintrag in der Produkte-Tabelle gibt. Die Zelle in der Produkte-Tabelle hat dann den Wert NULL.
www.appcamps.de
Datenbanken Musterlösung Sitzung 3
By appcamps
Datenbanken Musterlösung Sitzung 3
- 1,371