SQL Beispiele


Hier noch die Tabellen und einige Beispielabfragen (z.B. für ein kleines Reisebüro)

Tabelle MITREISENDE

NAME_ID NAME VORNAME ALTER
U00001 URLAUBER ANNA 35
U00001 URLAUBER DANIEL 15
U00001 URLAUBER EMIL 6
U00001 URLAUBER JULIUS 3
U00003 URLAUBER ANNA 35
KRANK GUSTAV 55

Tabelle PREISLISTE

UNTERKUNFT_ID LAND STADT HOTEL KATEGORIE PREIS KOSTEN
P00001 D BERLIN HERBERGE 2 30,00 15,00
P00002 D HAMBURG HOTEL 3 60,00 25,00
P00003 D MÜNCHEN HOTEL 4 80,00 30,00
P00004 D BERLIN HOTEL 3 40,00 10,00
P00005 D HAMBURG HOTEL 3 50,00 10,00
P00006 D MÜNCHEN HOTEL 3 55,00 10,00
P00007 D MÜNCHEN HOTEL 3

Tabelle RABATT

ALTER_VON ALTER_BIS RABATT
0 3 100,00
4 10 50,00
11 16 25,00
16 150 0,00

Tabelle URLAUB

NAME_ID NAME VORNAME ALTER URLANFANG URLENDE UNTERKUNFT_ID
U00001 URLAUBER ANTON 45 01.08.07 11.08.07 P00001
U00002 BLAUMACHER BERTA 22 15.07.07 25.07.07 P00002
U00003 URLAUBER CÄSAR 38 06.03.07 16.03.07 P00003
U00004 URLAUBER ANTON 45 13.09.07 15.09.07
U00005 URLAUBER ANTON 45 20.10.07 27.10.07
U00006 URLAUBER CÄSAR 38 20.10.07 27.10.07

Tabelle ZAHLUNGEN

NAME_ID ANZAHLUNG UEBERWEISUNG
U00001 100,00 300,00
U00002

Abfrage Anzahl der Mitreisende nach URLAUB.NAME

SELECT U.NAME_ID, U.NAME, U.VORNAME, COUNT(M.NAME) Mitreisende
FROM URLAUB U LEFT OUTER JOIN MITREISENDE M ON U.NAME_ID = M.NAME_ID
GROUP BY U.NAME_ID, U.NAME, U.VORNAME

Abfrage Namen der Mitreisenden nach URLAUB.NAME

SELECT U.NAME_ID, U.NAME, U.VORNAME, M.NAME, M.VORNAME
FROM MITREISENDE M LEFT OUTER JOIN URLAUB U ON M.NAME_ID = U.NAME_ID

Abfrage Reisekosten für Urlaub nach URLAUB.NAME

SELECT U.NAME, U.VORNAME, SUM(((U.URLENDE-U.URLANFANG)*P.PREIS)-((U.URLENDE-U.URLANFANG)*P.PREIS*R.RABATT/100))
FROM PREISLISTE P, RABATT R, URLAUB U
WHERE U.UNTERKUNFT_ID = P.UNTERKUNFT_ID AND ((U.ALTER Between R.ALTER_VON And R.ALTER_BIS))
GROUP BY U.NAME, U.VORNAME

Abfrage Reisekosten für Mitreisende nach URLAUB.NAME

SELECT UM.NAME, UM.VORNAME, SUM(((UM.URLENDE-UM.URLANFANG)*PM.PREIS)-((UM.URLENDE-UM.URLANFANG)*PM.PREIS*RM.RABATT/100))
FROM MITREISENDE MM, PREISLISTE PM, RABATT RM, URLAUB UM
WHERE MM.NAME_ID = UM.NAME_ID AND UM.UNTERKUNFT_ID = PM.UNTERKUNFT_ID AND ((MM.ALTER Between RM.ALTER_VON And RM.ALTER_BIS))
GROUP BY UM.NAME, UM.VORNAME

Abfrage Reisekosten Gesamt nach URLAUB.NAME

SELECT U.NAME, U.VORNAME, SUM(((U.URLENDE-U.URLANFANG)*P.PREIS)-((U.URLENDE-U.URLANFANG)*P.PREIS*R.RABATT/100))/COUNT(U.NAME)+SUM(((UM.URLENDE-UM.URLANFANG)*PM.PREIS)-((UM.URLENDE-UM.URLANFANG)*PM.PREIS*RM.RABATT/100))
FROM MITREISENDE MM, PREISLISTE P, PREISLISTE PM, RABATT R, RABATT RM, URLAUB U, URLAUB UM
WHERE U.UNTERKUNFT_ID = P.UNTERKUNFT_ID AND ((U.ALTER Between R.ALTER_VON And R.ALTER_BIS) AND (UM.NAME=U.NAME) AND (UM.VORNAME=U.VORNAME) AND (MM.NAME_ID=UM.NAME_ID) AND (UM.UNTERKUNFT_ID=PM.UNTERKUNFT_ID) AND (MM.ALTER Between RM.ALTER_VON And RM.ALTER_BIS))
GROUP BY U.NAME, U.VORNAME