Lösungen: JOIN
Completion requirements
- USE UebVerleger
- /* Aufg. 1: Welche Angestellte haben welchen Job? [43] */
- SELECT Vname, Nname, Job_Besch FROM Angestellte
- LEFT JOIN Job ON Angestellte.Job_id = Job.Job_id
- /* Aufg. 2: Welche Buchhandlung erhält welche Rabattart? [6] */
- SELECT Name, Rabattart FROM Buchhandlungen
- LEFT JOIN Rabatte ON Buchhandlungen.B_id = Rabatte.B_id
- USE UebBibliothek
- /* Aufg. 3: Die Abfrage soll den Titeln die entsprechende ISBN-Nummer zuordnen. [1000] */
- SELECT Titel, ISBN FROM Titel
- LEFT JOIN Buch ON Titel.Titel_nr = Buch.Titel_nr
- USE UebVerleger
- /* Aufg. 4: Welche Titel hat die Autorin Anne Ringer verlegen lassen. [2] */
- SELECT A_vname, A_nname, Titel FROM Autoren
- INNER JOIN Titelautor ON Autoren.A_id = Titelautor.A_id
- LEFT JOIN Titel ON Titelautor.Titel_id = Titel.Titel_id
- WHERE A_nname = 'Ringer' AND A_vname = 'Anne'
- USE UebBibliothek
- /* Aufg. 5: Welche Jugendlichen sind welchen Erwachsenen zugeordnet? */
- SELECT Jugendliche.Mitglieds_Nr, Nachname, Vorname, Erw_Mitglieds_Nr
- FROM Jugendliche LEFT JOIN Mitglieder ON Jugendliche.Mitglieds_Nr = Mitglieder.Mitglieds_nr
- /* oder Lösung von Jakob Klamser */
- DECLARE @tmp TABLE
- (
- ErwachsenerNach VARCHAR(MAX),
- ErwachsenerVor VARCHAR(MAX),
- J_id int
- )
- INSERT INTO @tmp
- SELECT m.Nachname AS ErwachsenerNachName, m.Vorname AS ErwachsenerVorName, j
- .Mitglieds_Nr AS Jugendlicher FROM Jugendliche AS j
- INNER JOIN Erwachsene AS e ON e.Mitglieds_Nr = j.Erw_Mitglieds_Nr
- INNER JOIN Mitglieder AS m ON m.Mitglieds_Nr = e.Mitglieds_Nr AND
- m.Mitglieds_Nr
- = j.Erw_Mitglieds_Nr
- SELECT m.Nachname AS JugendlicherNachname, m.Vorname AS JugendlicherVorname,
- ErwachsenerNach, ErwachsenerVor FROM Mitglieder AS m
- INNER JOIN @tmp ON J_id = m.Mitglieds_Nr
- /* oder Lösung von Haidar Mourtada */
- SELECT
- jug.Vorname AS 'JugVorname', jug.Nachname AS 'JugNachname', jug.Mitglieds_Nr AS 'JugID', erw.Vorname AS 'ErwVorname', erw.Nachname AS 'ErwNachname', erw.Mitglieds_Nr AS 'ErwID'
- FROM
- (
- SELECT
- b.Mitglieds_Nr AS 'mitgliednr',
- b.Erw_Mitglieds_Nr AS 'erwid'
- FROM Erwachsene a
- JOIN Jugendliche b ON a.Mitglieds_Nr = b.Erw_Mitglieds_Nr
- ) x
- JOIN Mitglieder erw ON erw.Mitglieds_Nr = x.erwid
- LEFT JOIN Mitglieder jug ON jug.Mitglieds_Nr = x.mitgliednr
- /* Aufg. 6: Selektieren Sie alle entliehenen Titel mit der Exemplarnummer (doppelte Datensätze unterdrücken). [250] */
- SELECT DISTINCT Titel, Exemplar_Nr, Entliehen FROM Titel
- INNER JOIN Exemplar ON Entliehen = 'Y' ORDER BY Titel, Exemplar_Nr
- /* Aufg. 7: Wer hat arabische (Sprache = 'arabic') Bücher ausgeliehen? [655] */
- SELECT DISTINCT Mitglieder.Mitglieds_Nr, Nachname, Vorname FROM Mitglieder
- INNER JOIN Leihvorgang ON Mitglieder.Mitglieds_Nr = Leihvorgang.Mitglieds_Nr
- INNER JOIN Titel ON Leihvorgang.Titel_Nr = Titel.Titel_Nr
- INNER JOIN Buch ON Titel.Titel_Nr = Buch.Titel_Nr
- WHERE Sprache = 'arabic'
- /* Aufg. 8: Lassen Sie sich aus der Datenbank Bibliothek die erwachsenen Mitglieder auflisten, */
- /* die den gleichen Wohnort wie das Mitglied mit der Mitglieds_Nr=13 haben. */
- /* Tabellenspalten: Mitglieds_Nr, Name und Ort [1155] */
- SELECT M.Mitglieds_Nr, M.Nachname, E.Ort
- FROM Mitglieder AS M
- JOIN Erwachsene AS E
- ON E.Mitglieds_Nr=M.Mitglieds_Nr
- JOIN Erwachsene EE
- ON E.Ort=EE.Ort
- WHERE EE.Mitglieds_Nr=13
Last modified: Thursday, 24 May 2018, 2:07 PM