Problem bei einfacher Abfrage

automatikzx

Benutzer
Beiträge
15
Moin Moin.

Ich möchte gerne eine Abfrage erstellen, die Alle Kunden anzeigt, die mindestens 5 Artikel gekauft haben.
Meine Tabellen sieht so aus:

Kunde: KundeID, Name

Auftrag: AuftragID, Kaufdatum, Anzahl

Kunde_Auftrag: FK_KundeID, FK_AuftragID

Ich möchte gerne den Namen und die Anzahl ausgeben. Wäre nett wenn mir da einer die Lösung sagen kann.

Danke. :)
 
Werbung:
Moin moin,

ich glaube dir einfach die Lösung zu präsentieren würde dich nicht weiterbringen. Hilfestellung wird dir, denke ich, gerne gegeben. :)
Am besten du zeigst mal was du bisher hast und woran du momentan scheiterst.

Viele Grüße
 
Na, ich will mal nicht so sein heute ...

Code:
test=*# create table kunde (id int primary key, name text);
CREATE TABLE
test=*# create table auftrag(id int primary key, datum date, anzahl int);
CREATE TABLE
test=*# create table kunde_auftrag(kunde int references kunde, auftrag int references auftrag);
CREATE TABLE
test=*# insert into kunde select s, 'Kunde'||s::int from generate_series(1,5) s;
INSERT 0 5
test=*# insert into auftrag(id, anzahl) select s, random()*100 from generate_series(1, 100) s;
INSERT 0 100
test=*# insert into kunde_auftrag select (1 + (random()*4)::int), 1+(random()*99)::int from generate_series(1, 200) s;
INSERT 0 200
test=*# select kunde, count(1) from kunde_auftrag group by kunde having count(1) >= 50 ;
 kunde | count
-------+-------
  4 |  54
  3 |  60
(2 Zeilen)

Via JOIN da noch den Kundennamen zu ermitteln überlasse ich Dir nun aber zur Übung.
 
Moin nochmal. Ich habe vergessen zu erwähnen, dass ich in LibreOffice Base arbeite. Habe eigentlich nichts mit Datenbanken nichts zu tun und brauche sie nur einmalig.
Hab's erst mit: SELECT Kunde.Name, Auftrag.Anzahl FROM Kunde, Auftrag WHERE Anzahl >= 5
versucht, aber das scheint leider nicht zu klappen.
 
Nun ja, die Anpassung der Spaltennamen von meinem Beispiel an Deine realen Tabellen überlasse ich Dir ebenfalls zur Übung.

Hätte ich ein DROP geposted, hättest Du das auch so ausgeführt, oder?
 
Wenn akretschmer schon so nett war will ich das auch mal sein..

Wie wäre es hiermit als anstoß:

"
SELECT *
FROM Kunde_Auftrag ka
INNER JOIN kunde k
ON ka.fk_kunden_id = k.kundenid
INNER JOIN Auftrag a
ON a.auftragid = ka.fk_auftragid
WHERE a.Anzahl > 4
"
Den Rest dürftest du schaffen...
 
Dankeschön, hat geklappt! :)

Jetzt noch eine letzte Aufgabe, die ich lösen müsste. Die ist ein bisschen komplizierter.
Es kommt eine 3. Tabelle hinzu, die "Laden" heißt mit den Spalten "LadenID" & "LadenName". Und der Tabelle Kunde wird die Spalte "Alter" hinzugefügt

Und zwar soll ich für jeden Laden das durchschnittliche Alter der Kunden, die über diesen mindestens zwei Artikel gekauft haben ausgegeben werden.

Ich bin mir jetzt nicht so ganz sicher, wie ich die Tabellen jetzt verknüpfen soll. Würde es gehen, wenn ich nur "Laden" und "Auftrag" miteinander verknüpfe? Weil ich Auftrag und Kunde ja bereits in Beziehung stehen.

Und wie sieht dann die Abfrage aus? Ich weiß, dass ich auf jeden all mit
SELECT LadenName, AVG(Alter)
FROM ...
anfangen müsste.
 
mal so aus der Hüfte geschossen(und auch nur schemenhaft, damit man dir frecher weise nicht das nachdenken abnimmt ;) ): Kunde kauft (Auftrag) etwas in dem Laden "xyz"... demzufolge müsste der Kunde mit dem Auftrag, der Auftrag mit dem Laden usw verknüppelt werden ;)

Bau doch mal was und stell es hier der Masse zur Verfügung :)
 
Werbung:
ähm.. mal so eine Frage am Rande... was und wofür genau treibst du da eigentlich? Sind das Hausaufgaben oder langeweile/hobby oder beziehst du dafür geld? :D
 
Zurück
Oben