SQL Abfrage

User16383

Neuer Benutzer
Beiträge
3
Ich komme bei der Aufgabe nicht auf die Lösung. Vielleicht kann mir jemand dabei helfen.

Gegeben sind drei Relationen:
Regal: RegalNr, Stauraum, ArtikelNr, Typ, SupermarktNr
Supermarkt: SupermarktNr, Name
Artikel: ArtikelNr, Name, Herkunft

Aufgabe:
Formulieren sie die Abfrage:
Die Namen der Artikel, deren Artikelnummer kleiner als 200 ist und die mindestens in zwei Regalen vorkommen, die nicht im selben Supermarkt stehen.

Danke schonmal im Voraus!
 
Werbung:
Mein Ansatz ist:

SELECT Name
FROM Artikel, Regal
WHERE ArtikelNr < 200
and exists (SELECT SupermarktNr FROM Regal WHERE ArtikelNr.1 = ArtikelNr.2 and SupermarktNr.1 <> SupermarktNr.2)
 
So wie ich es gemacht habe kommt bei mir nicht die gewünschte Ausgabe. Vielleicht habe ich einen Denkfehler. Und die Tabellen Artikel und Regal hängen doch nur mit der Artikelnummer zusammen oder?
 
Und die Tabellen Artikel und Regal hängen doch nur mit der Artikelnummer zusammen oder?

Ja, DIR mag das klar sein, aber nicht der Datenbank. Wenn 2 Tabellen über ein Feld zusammenhängen - dann kan man darüber einen JOIN machen.

Code:
edb=*# select * from regal ;
 nr | artikel | markt 
----+---------+-------
  1 |       1 |     1
  2 |       2 |     2
(2 rows)

edb=*# select * from markt ;
 nr | name 
----+------
  1 | m1
  2 | m2
(2 rows)

edb=*# select * from artikel;
 nr | name 
----+------
  1 | a1
  2 | a2
(2 rows)

edb=*# with x as (select r.markt as markt, r.nr as regal, a.nr as a_nr, a.name as artikel from regal r left join markt m on r.markt=m.nr left join artikel a on r.artikel=a.nr) select * from x;
 markt | regal | a_nr | artikel 
-------+-------+------+---------
     1 |     1 |    1 | a1
     2 |     2 |    2 | a2
(2 rows)

edb=*#

Jetzt hast Du das schon mal alles zusammengefaßt.
 
Werbung:
Natürlich reicht allein
Code:
select r.markt as markt, r.nr as regal, a.nr as a_nr, a.name as artikel from regal r left join markt m on r.markt=m.nr left join artikel a on r.artikel=a.nr
Das WITH hat in dem Kontext keine sinnvolle Funktion.
 
Zurück
Oben