faecher:informatik:oberstufe:datenbanken:joins:start

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
faecher:informatik:oberstufe:datenbanken:joins:start [21.10.2020 17:34] – [Sinnvolle Datensätze bilden] sbelfaecher:informatik:oberstufe:datenbanken:joins:start [21.03.2025 07:01] (aktuell) – [Abfragen über mehrere Tabellen] Frank Schiebel
Zeile 1: Zeile 1:
-====== SQL-Joins   -- Grundlagen======+====== SQL-Joins   - Grundlagen======
  
-Wie werden die Tabellen (und Entitäten) jetzt aber mit SQL Abfragen verbunden, so das die gewünschten "zusammengesetzten" Informationen als Ergebnis der Abfrage vorliegen?+Wie werden die Tabellen (und Entitäten) jetzt aber mit SQL Abfragen verbunden, so dass die gewünschten "zusammengesetzten" Informationen als Ergebnis der Abfrage vorliegen?
  
 ===== Abfragen über mehrere Tabellen ===== ===== Abfragen über mehrere Tabellen =====
  
-Bei Abfragen aus mehreren Tabellen wird ohne weitere Bedingung die Besziehung zwischen den Entitäten nicht berücksichtigt - es werden einfach alle Kombinationen aller Datensätze der beiden Tabellen gebildet und ausgegeben((Das kartesische Produkt der Tabellen)). Die meisten der so aggregierten Datensätze sind sinnfrei. +Bei Abfragen aus mehreren Tabellen wird ohne weitere Bedingung die Beziehung zwischen den Entitäten nicht berücksichtigt - es werden einfach alle Kombinationen aller Datensätze der beiden Tabellen gebildet und ausgegeben((Das kartesische Produkt der Tabellen)). Die meisten der so aggregierten Datensätze sind sinnfrei. 
  
 Beipiel: Die Tabelle ''lehrer'' hat 6 Datensätze, die Tabelle ''schueler'' 12. Die Abfrage Beipiel: Die Tabelle ''lehrer'' hat 6 Datensätze, die Tabelle ''schueler'' 12. Die Abfrage
Zeile 13: Zeile 13:
 </code> </code>
  
-liefert als Ergebnis eine Tabelle mit 72 Datensätzen:+liefert als Ergebnis eine Tabelle mit ($6\cdot 12=$) 72 Datensätzen:
  
 {{ :faecher:informatik:oberstufe:datenbanken:joins:auswahl_081.png |}} {{ :faecher:informatik:oberstufe:datenbanken:joins:auswahl_081.png |}}
Zeile 32: Zeile 32:
 Das macht Sinn, das ist eine Liste aller Lehrer und Schüler, und zwar passend, so das die Schüler bei Ihren Klassenlehrern mitgelistet werden. Das macht Sinn, das ist eine Liste aller Lehrer und Schüler, und zwar passend, so das die Schüler bei Ihren Klassenlehrern mitgelistet werden.
  
-===== Aufbau =====+===== Allgemeiner Aufbau =====
  
 Eine Klausel für SQL-Joins ist im Wesentlichen folgendermaßen aufgebaut: Eine Klausel für SQL-Joins ist im Wesentlichen folgendermaßen aufgebaut:
Zeile 39: Zeile 39:
 SELECT [DISTINCT] { spalten | * } SELECT [DISTINCT] { spalten | * }
 FROM tabelle1, tabelle2, ... FROM tabelle1, tabelle2, ...
-WHERE tabelle1.spalte1=tabelle2.spalte1, +WHERE tabelle1.spalte1=tabelle2.spalte1 AND 
-      tabelle1.spalte2=tabelle2.spalte2...+      tabelle1.spalte2=tabelle2.spalte2 AND ...
 </code> </code>
  
Zeile 48: Zeile 48:
 SELECT [DISTINCT] { spalten | * } SELECT [DISTINCT] { spalten | * }
 FROM tabelle1 AS t1, tabelle2 AS t2, ... FROM tabelle1 AS t1, tabelle2 AS t2, ...
-WHERE t1.spalte1=t2.spalte1,t1.spalte2=t2.spalte2...+WHERE t1.spalte1=t2.spalte1 AND t1.spalte2=t2.spalte2 AND ...
 </code> </code>
  
-Das Ergebnis eines Joins ist eine Tabelle mit allen Spalten, die in der SQL-Klausuel angegeben wurden. Die Spaltenbezeichnung muss eindeutig sein. Enthalten die Tabellen ''tabelle1'' und ''tabelle2'' gleichnamige Spalten wie ''id'', muss die Spalte mit ''tabelle1.id'' eindeutig benannt sein.+Das Ergebnis eines Joins ist eine Tabelle mit allen Spalten, die in der SQL-Klausel angegeben wurden. Die Spaltenbezeichnung muss eindeutig sein. Enthalten die Tabellen ''tabelle1'' und ''tabelle2'' gleichnamige Spalten wie ''id'', muss die Spalte mit ''tabelle1.id'' eindeutig benannt sein.
  
 Wird keine WHERE-Bedingung angegeben, wird das Kreuzprodukt der Tabellen gebildet, d.h. jeder Datensatz einer Tabelle wird mit jedem der anderen Tabelle(n) kombiniert. Wird keine WHERE-Bedingung angegeben, wird das Kreuzprodukt der Tabellen gebildet, d.h. jeder Datensatz einer Tabelle wird mit jedem der anderen Tabelle(n) kombiniert.
Zeile 71: Zeile 71:
 </code> </code>
  
-===== Aufgaben =====+
 ---- ----
 {{:aufgabe.png?nolink  |}} {{:aufgabe.png?nolink  |}}
Zeile 84: Zeile 84:
   - Gib die Liste aller Kundennummern zusammen mit den Namen der Artikel, die unter dieser Nummer bestellt wurden, aus.   - Gib die Liste aller Kundennummern zusammen mit den Namen der Artikel, die unter dieser Nummer bestellt wurden, aus.
   - Gib alle  Zeitpunkte aus, zu denen Thomas Tischler Artikel im Webshop bestellt hat.   - Gib alle  Zeitpunkte aus, zu denen Thomas Tischler Artikel im Webshop bestellt hat.
-  - Gib Sie die Namen aller Artikel aus, die Maximilian Mayer bestellt hat.+  - Gib die Namen aller Artikel aus, die Maximilian Mayer bestellt hat.
   - Gib die Namen aller Kunden aus, die mindestens einmal einen Artikel bestellt haben, absteigend sortiert nach dem Datum der letzten Bestellung.   - Gib die Namen aller Kunden aus, die mindestens einmal einen Artikel bestellt haben, absteigend sortiert nach dem Datum der letzten Bestellung.
   - Gib pro Kunde aus, wie viele Artikel er insgesamt bestellt hat. Die Liste soll absteigend sortiert nach der Anzahl der Bestellungen ausgegeben werden.   - Gib pro Kunde aus, wie viele Artikel er insgesamt bestellt hat. Die Liste soll absteigend sortiert nach der Anzahl der Bestellungen ausgegeben werden.
Zeile 92: Zeile 92:
   - Zusatzaufgabe: Gib die Liste aller Kunden aus, die noch nie einen Artikel im Webshop bestellt haben.((Tipp: ''WHERE attribute NOT IN'' (SQL-Klausel). ))   - Zusatzaufgabe: Gib die Liste aller Kunden aus, die noch nie einen Artikel im Webshop bestellt haben.((Tipp: ''WHERE attribute NOT IN'' (SQL-Klausel). ))
  
 +->  [[.:loseungen|Lösungsvorschläge]]
 +
 +===== Material =====
 +
 +{{simplefilelist>:faecher:informatik:oberstufe:datenbanken:joins:*}}
  • faecher/informatik/oberstufe/datenbanken/joins/start.1603301675.txt.gz
  • Zuletzt geändert: 21.10.2020 17:34
  • von sbel