SQL-Anfragen

bluepeople12

Aktiver Benutzer
Beiträge
26
Hey Leute,

hab hier folgende Tabellen:
aufgabe_db17.png

a) Geben Sie eine SQL-Anfrage an, die den Namen (Firma) aller Fillialen ergibt, die as Modell "Gold" verkauft haben.

Meine Lösung:
Code:
SELECT F.Firma
FROM Filiale F, Vertrag V
WHERE F.Firma = V.Filiale AND V.Modell="Golf"

b) Geben Sie eine SQL-Anfrage an, die die Menge aller Paare (Filliale, Hersteller) ergibt, so dass diese Filliale Modelle des betreffenden Herstellers verkauft hat.

Meine Lösung:
Code:
SELECT DISTINCT F.Firma, P.Hersteller
FROM Filiale F, Vertrag V, Preisliste P
WHERE F.Firma = V.Filiale AND V.Modell = P.Modell

c) Geben Sie eine SQL-Anfrage an, die für jedes Modell den höchsten Rabatt ausgibt, der für dieses Modell gewährt wurde (Rabatt = Listenpreis - Kaufpreis).

Bei dieser Lösung bin ich mir nicht mehr sicher, ob das auch wirklich so ok ist.
Meine Lösung:
Code:
SELECT V.Modell, MAX(P.Listenpreis - V.Kaufpreis)
FROM Filiale F, Vertrag V, Preisliste P
WHERE F.Firma = V.Filiale AND V.Modell = P.Modell

d) Geben Sie eine SQL-Anfrage an, die alle Firmen und Orte der Fillialen ergibt, die keinen "Focus" verkauft haben.

Hier zu hab ich leider keine Lösung, weil mir auch nichts eingefallen ist dazu :-/ Habt ihr vielleicht ein paar Hinweise ?

e) Geben Sie in natürlicher Sprache an, was die folgende Anfrage ergibt. Geben Sie weiterhin das Ergebnis der Anfrage für die oben stehende Datenbasis an.

SELECT DISTINCT X.Filiale FROM Vertrag AS X
WHERE NOT EXISTS
((SELECT Modell FROM Preisliste
WHERE Hersteller='VW')
EXCEPT
(SELECT DISTINCT Modell FROM Vertrag V
WHERE V.Filiale = X.Filiale))

Also ich würde hierzu sagen: Alle Filialen, die ein Auto vom Hersteller VW verkauft haben.
 
Werbung:

ukulele

Datenbank-Guru
Beiträge
4.702
a) richtig
b) Finde ich komisch formuliert. Für mich fehlt die "Menge", auch wenn das nicht so viel Sinn ergibt :)
Code:
SELECT count(*),F.Firma, P.Hersteller
FROM Filiale F, Vertrag V, Preisliste P
WHERE F.Firma = V.Filiale AND V.Modell = P.Modell
GROUP BY F.Firma, P.Hersteller
c) richtig, glaube ich. Mit den Testdaten in einer DB fällt es dann doch leichter...
d) z.b.
Code:
SELECT    F.Firma
FROM    F.Firma
WHERE    f.Firma NOT IN (    SELECT    F.Firma
                            FROM    Filiale F, Vertrag V
                            WHERE    F.Firma = V.Filiale
                            AND        V.Modell = 'Focus' )
 
Werbung:
Oben