# SQL Select statement so viele informationen wie im endergebnis (im select wird beschrieben wie das endergebnis aussehen soll) Select beginnt immer beim Ausführen mit dem From Statement From statement baut temporär eine tabelle zur abfrage die aus allen tabellen besteht tabellen werden gekreuzt Where statement funktioniert auf der gekreuzten tablle (er sucht die zeilen wo das gesuchte geben ist und löscht den rest) immer Tabelle.zeile auch bei mehreren abfragen aus einer tabelle Count Befehl zählt die zeilen die Übrigbleiben7angegeben werden Mit AS deklariert man abkürzungen/Bezeichner DISTINCT sorgt dafür jedes ergebnis nur einmal zwei bedingungen werden mit AND getrennt Texte in '' Bei Gleichdeutigkeit Tabelle.Spalte Select "sichtbare daten" from aus daten where filter ## Aufgabe 1: select Kunde.Nachname, Buch.Titel from Kunde, Buch where Kunde.id_ku = Buch.id_ku; ## Aufgabe 2: select Kunde.Nachname, Kunde.Vorname from Buch, Kunde where Buch.Titel = 'Datenbanken' AND Buch.ID_KU = Kunde.ID_KU; ## Aufgabe 3: select count (Buch.ID_KU) from Buch, Kunde where Buch.ID_KU = Kunde.ID_KU; ## Aufgabe 4: select Kunde.Vorname, Kunde.Nachname, Buch.Titel from Buch, Kunde, vormerken Where Buch.ID_BU = vormerken.ID_BU AND Kunde.ID_KU = vormerken.ID_KU; ## Aufgabe 5: select Kunde.Vorname, Kunde.Nachname from Kunde, Buch, vormerken Where vormerken.ID_KU = Kunde.ID_KU AND Buch.ID_BU = vormerken.ID_BU AND Buch.Titel = 'Datenbanken'; | ID_KU | Vorname | Nachname | Geburtsdatum | ID_BU | ISBN | Titel | ID_KU | ID_KU | ID_BU | | ----- | ------- | -------- | ------------ | ----- | ----------- | --------------- | ----- | ----- | ----- | | 1 | Eva | Klein | 1995-01-13 | 1 | 1-23456-001 | Leichter lachen | 2 | 1 | 2 | | 1 | Eva | Klein | 1995-01-13 | 1 | 1-23456-001 | Leichter lachen | 2 | 4 | 1 | | 1 | Eva | Klein | 1995-01-13 | 1 | 1-23456-001 | Leichter lachen | 2 | 4 | 2 | | 1 | Eva | Klein | 1995-01-13 | 2 | 1-23456-001 | Datenbanken | 3 | 1 | 2 | | 1 | Eva | Klein | 1995-01-13 | 2 | 1-23456-001 | Datenbanken | 3 | 4 | 1 | | 1 | Eva | Klein | 1995-01-13 | 2 | 1-23456-001 | Datenbanken | 3 | 4 | 2 | | 1 | Eva | Klein | 1995-01-13 | 3 | 1-23456-001 | Finazenraten | | 1 | 2 | | 1 | Eva | Klein | 1995-01-13 | 3 | 1-23456-001 | Finazenraten | | 4 | 1 | | 1 | Eva | Klein | 1995-01-13 | 3 | 1-23456-001 | Finazenraten | | 4 | 2 | | 1 | Eva | Klein | 1995-01-13 | 4 | 1-23456-001 | Haus und garten | 4 | 1 | 2 | | 1 | Eva | Klein | 1995-01-13 | 4 | 1-23456-001 | Haus und garten | 4 | 4 | 1 | | 1 | Eva | Klein | 1995-01-13 | 4 | 1-23456-001 | Haus und garten | 4 | 4 | 2 | | 2 | Kai | Blei | 1995-01-13 | 1 | 1-23456-001 | Leichter lachen | 2 | 1 | 2 | | 2 | Kai | Blei | 1995-01-13 | 1 | 1-23456-001 | Leichter lachen | 2 | 4 | 1 | | 2 | Kai | Blei | 1995-01-13 | 1 | 1-23456-001 | Leichter lachen | 2 | 4 | 2 | | 2 | Kai | Blei | 1995-01-13 | 2 | 1-23456-001 | Datenbanken | 3 | 1 | 2 | | 2 | Kai | Blei | 1995-01-13 | 2 | 1-23456-001 | Datenbanken | 3 | 4 | 1 | | 2 | Kai | Blei | 1995-01-13 | 2 | 1-23456-001 | Datenbanken | 3 | 4 | 2 | | 2 | Kai | Blei | 1995-01-13 | 3 | 1-23456-001 | Finazenraten | | 1 | 2 | | 2 | Kai | Blei | 1995-01-13 | 3 | 1-23456-001 | Finazenraten | | 4 | 1 | | 2 | Kai | Blei | 1995-01-13 | 3 | 1-23456-001 | Finazenraten | | 4 | 2 | | 2 | Kai | Blei | 1995-01-13 | 4 | 1-23456-001 | Haus und garten | 4 | 1 | 2 | | 2 | Kai | Blei | 1995-01-13 | 4 | 1-23456-001 | Haus und garten | 4 | 4 | 1 | | 2 | Kai | Blei | 1995-01-13 | 4 | 1-23456-001 | Haus und garten | 4 | 4 | 2 | | 4 | Ernst | Block | 1995-01-13 | 1 | 1-23456-001 | Leichter lachen | 2 | 1 | 2 | | 4 | Ernst | Block | 1995-01-13 | 1 | 1-23456-001 | Leichter lachen | 2 | 4 | 1 | | 4 | Ernst | Block | 1995-01-13 | 1 | 1-23456-001 | Leichter lachen | 2 | 4 | 2 | | 4 | Ernst | Block | 1995-01-13 | 2 | 1-23456-001 | Datenbanken | 3 | 1 | 2 | | 4 | Ernst | Block | 1995-01-13 | 2 | 1-23456-001 | Datenbanken | 3 | 4 | 1 | | 4 | Ernst | Block | 1995-01-13 | 2 | 1-23456-001 | Datenbanken | 3 | 4 | 2 | | 4 | Ernst | Block | 1995-01-13 | 3 | 1-23456-001 | Finazenraten | | 1 | 2 | | 4 | Ernst | Block | 1995-01-13 | 3 | 1-23456-001 | Finazenraten | | 4 | 1 | | 4 | Ernst | Block | 1995-01-13 | 3 | 1-23456-001 | Finazenraten | | 4 | 2 | | 4 | Ernst | Block | 1995-01-13 | 4 | 1-23456-001 | Haus und garten | 4 | 1 | 2 | | 4 | Ernst | Block | 1995-01-13 | 4 | 1-23456-001 | Haus und garten | 4 | 4 | 1 | | 4 | Ernst | Block | 1995-01-13 | 4 | 1-23456-001 | Haus und garten | 4 | 4 | 2 | | ID_KU | Vorname | Nachname | Geburtsdatum | ID_BU | ISBN | Titel | ID_KU | ID_KU | ID_BU | | ----- | ------- | -------- | ------------ | ----- | ----------- | --------------- | ----- | ----- | ----- | | 1 | Eva | Klein | 1995-01-13 | 2 | 1-23456-001 | Datenbanken | 3 | 1 | 2 | | 4 | Ernst | Block | 1995-01-13 | 2 | 1-23456-001 | Datenbanken | 3 | 4 | 2 | ## Aufgabe 6: select DISTINCT Buch.Titel, Kunde.Nachname from Buch, Kunde Where Kunde.ID_KU = Buch.ID_KU OR Buch.ID_KU = NULL; | ID_KU | Vorname | Nachname | Geburtsdatum | ID_BU | ISBN | Titel | ID_KU | | ----- | ------- | -------- | ------------ | ----- | ----------- | --------------- | ----- | | 1 | Eva | Klein | 1995-01-13 | 3 | 1-23456-001 | Finazenraten | | | 1 | Eva | Klein | 1995-01-13 | 3 | 1-23456-001 | Finazenraten | | | 2 | Kai | Blei | 1995-01-13 | 1 | 1-23456-001 | Leichter lachen | 2 | | 2 | Kai | Blei | 1995-01-13 | 3 | 1-23456-001 | Finazenraten | | | 4 | Ernst | Block | 1995-01-13 | 3 | 1-23456-001 | Finazenraten | | | 4 | Ernst | Block | 1995-01-13 | 4 | 1-23456-001 | Haus und garten | 4 | 1. Buch Inner JOIN Kunde ON B.ID_KU=Kunde.ID_KU 2. Kunde.ID_KU = Buch.ID_KU 3. Buch Left JOIN Kunde ON B.ID_KU=Kunde.ID_KU SELECT B.Titel, K.Vorname, K.Nachname FROM Buch LEFT JOIN Kunde ON B.ID_KU = K.ID_KU; from Buch, Kunde Left Join Alles Linke Tabelle wird übernommen Right Join Alles Rechte Tabelle wird übernommen Inner Join Alles wird übernommen ## Aufgabe 7: SELECT Kunde.Nachname, Buch.Titel FROM Kunde LEFT JOIN ON Kunde.ID_KU = Buch.ID_KU; ## Aufgabe 8: SELECT Kunde.Nachname, Buch.Titel FROM Kunden LEFT JOIN ON Kunde.ID_KU = Buch.ID_KU Where K.Nachname Between 'B' and 'O'; ## Aufgabe 9: SELECT Kunde.Nachname, Buch.Titel FROM (Buch LEFT JOIN vormerken ON Buch.ID_BU = vormerken.ID_BU) LEFT JOIN Kunden ON Kunden.ID_KU ON vormerken.ID_KU; | ID_BU | ISBN | Titel | ID_KU | v ID_KU | v ID_BU | | ----- | ----------- | --------------- | ----- | ------- | ------- | | 1 | 1-23456-001 | Leichter Lachen | 2 | 4 | 1 | | 2 | 1111 | Datenbanken | 3 | 1 | 2 | | 2 | 1111 | Datenbanken | 3 | 4 | 2 | | 3 | 1567 | Finanzratgeber | | | | | 4 | 1234 | Haus Und Garten | 4 | | | | ID_BU | ISBN | Titel | ID_KU | v ID_KU | v ID_BU | | ----- | ----------- | --------------- | ----- | ------- | ------- | | 1 | 1-23456-001 | Leichter Lachen | 2 | 4 | 1 | | 2 | 1111 | Datenbanken | 3 | 1 | 2 | | 2 | 1111 | Datenbanken | 3 | 4 | 2 | | 3 | 1567 | Finanzratgeber | | NULL | | | 4 | 1234 | Haus Und Garten | 4 | NULL | | | ID_BU | ISBN | Titel | ID_KU | v ID_KU | v ID_BU | k ID_KU | Vorname | Nachname | Geburtsdatum | | ----- | ----------- | --------------- | ----- | ------- | ------- | ------- | ------- | -------- | ------------ | | 1 | 1-23456-001 | Leichter Lachen | 2 | 4 | 1 | 4 | Ernst | Block | 1988-02-02 | | 2 | 1111 | Datenbanken | 3 | 1 | 2 | 1 | Eva | Klein | 1995-01-13 | | 2 | 1111 | Datenbanken | 3 | 4 | 2 | 4 | Ernst | Block | 1988-02-02 | | 3 | 1567 | Finanzratgeber | NULL | NULL | NULL | NULL | NULL | NULL | NULL | | 4 | 1234 | Haus und Garten | 4 | NULL | NULL | NULL | NULL | NULL | NULL | Alle daten die gebraucht werden entweder Kreutzprodukten oder Joinen und dann welche where bedingungen Join immer wenn komplett erwähnt wird. ## Aufgabe 10: SELECT Kunde.Nachname, Buch.Titel from Buch, Kunde, vormerken Where Kunde.ID_KU = Buch.ID_KU AND BUCH.ID_KU = vormerken.ID_KU; SELECT Kunde.Nachname, Buch.Titel from Buch, Kunde, vormerken Where ((Kunde.ID_KU = Buch.ID_KU AND Buch.Titel = Haus und Garten) And Buch.ID_KU = vormerken.ID_KU); Select Buch.Titel, Kunde.Nachname from Buch, (SELECT Kunde.Nachname, Buch.Titel, vormerken.ID_BU from Buch, Kunde, vormerken Where ((Kunde.ID_KU = Buch.ID_KU AND Buch.Titel = Haus und Garten) And Buch.ID_KU = vormerken.ID_KU)) As Query Where Query.ID_BU = Buch.ID_BU; Abfrage in Abfrage Wichtig die Abfrage in der Abfrage einen Namen geben, und dort auch deklarieren was später gebraucht wird. Select anfragen im inneren werden zuerst gelöst Group by nach dem where bei Group By nur noch so was wie (Rechenfunktionen) gruppiert gleiche sachen