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.  

SELECT COUNT(DISTINCT Suppliers.Country) 
FROM Products
JOIN Suppliers 
ON Products.SupplierID=Suppliers.SupplierID

Zeigt an, wie viele Lieferanten aus unterschiedlichen Ländern Produkte liefern. 

         17 Länder

Mögliche Lösung:

SELECT COUNT(*) 
FROM Products
JOIN Suppliers 
ON Products.SupplierID=Suppliers.SupplierID
WHERE Suppliers.City LIKE "B%"
#oder
SELECT COUNT(*) 
FROM Products
JOIN Suppliers 
ON Products.SupplierID=Suppliers.SupplierID
WHERE Suppliers.City LIKE "b%"

Zeigt an, wie viele Lieferanten aus einer Stadt kommen die mit "B" beginnt und die Produkte liefern. 

         8 Lieferanten

          Bei Like wird Groß- und Kleinschreibung nicht berücksichtigt

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.  

SELECT Products.ProductName, Categories.CategoryName,
Categories.Description
FROM Products
JOIN Categories 
ON Products.CategoryID=Categories.CategoryID

Erstellt eine Join zwischen den Tabellen Products und Categories.

Gibt den Produktnamen, den Kategorienamen und die Beschreibung der Kategorie aus.

Mögliche Lö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. 
  • Was passiert, wenn du bei der ersten Abfrage nicht nach den unterschiedlichen Spediteuren gruppierst? Macht die Ausgabe dann noch Sinn?
  • Lass dir bei der zweiten Ausgabe nur die Mitarbeiter 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 Seiten findest du mögliche Antworten. Überlege aber zuerst selbst, bevor du weiter klickst.

SELECT COUNT(Orders.OrderID), Shippers.ShipperName FROM Orders
JOIN Shippers 
ON Orders.ShipperID=Shippers.ShipperID

         Macht 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:

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

Zeigt alle Mitarbeiter, deren Vorname mit "M" beginnt und die mehr als 10 Bestellungen verwalten.

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.  

Datenbanken Musterlösung Sitzung 3

By appcamps

Datenbanken Musterlösung Sitzung 3

  • 61
Loading comments...

More from appcamps