Ausgabe hat eine Zeile zuviel

PJOHM

Neuer Benutzer
Beiträge
3
Hallo zusammen,

ich habe eine Frage an euch und hoffe ihr könnt mir helfen.

Ich habe die Tabellen
- Kunde: KundenNr
Name
Wohnort
- Artikel: ArtikelNr
Bezeichnung
Gewicht
- Bestellung: BestellNr
AnzArtikel
Datum
ArtikelNr (FK)
KundenNr (FK)

Nun sollen Kundenpaare die das selbe bestellt haben ausgegeben werden.
Die Ausgabe soll folgendermaßen aussehen:
Kunde1||Name1||Kunde2||Name2||Bezeichnung

Soweit funktioniert das auch fast :D
Aber leider werden bei mir immer 2 Zeilen ausgegeben.
Kunde1||Name1||Kunde2||Name2||Bezeichnung
Kunde2||Name2||Kunde1||Name1||Bezeichnung


Das ist mein Code:

FROM Kunde as K1 JOIN Kunde as K2
JOIN Bestellung as B1
JOIN Bestellung as B2
JOIN Artikel
On K1.KundenNr!=K2.KundenNr
AND B1.ArtikelNr=Artikel.ArtikelNr
AND B2.ArtikelNr=Artikel.ArtikelNr
AND B2.KundenNr=K2.KundenNr
AND B1.KundenNr=K1.KundenNr
WHERE Artikel.ArtikelNr IN(SELECT ArtikelNr
FROM Bestellung
GROUP BY K1.KundenNr, K1.Name, K2.KundenNr, K2.Name, Bezeichnung
having count(ArtikelNr)>=2)

Danke schon mal ;)
 
Werbung:
Das ist mein Code:

Das kann so nicht funktionieren, da fehlt ja schon mal das Select. Davon abgesehen, was wenn 3 Kunden das bestellt haben, was soll dann in den 2 Kunden-Spalten stehen?

Mein Ansatz für eine jetzt vereinfachte Tabelle mit den Bestellungen:

Code:
test=*# select * from bestellung ;
 kunde | artikel
-------+---------
  1 |  1
  1 |  2
  2 |  2
  3 |  2
(4 rows)

Time: 0,136 ms
test=*# select artikel, array_agg(kunde) from bestellung group by artikel having array_upper(array_Agg(kunde),1) >= 2;
 artikel | array_agg
---------+-----------
  2 | {1,2,3}
(1 row)

Hier hast Du die Artikel, die von mehr als oder 2 Kunden bestellt wurden, mit den Kunden, die das bestellt haben. je nachdem, was Du dann weiter suchst, kann man das dann weiter ausbauen. Ist aber jetzt PostgreSQL.
 
Hi, danke für deine Antwort.

Ja da ist wohl ein Kopierfehler drin, muss natürlich noch SELECT K1.KundenNr, K1.Name, K2.KundenNr, K2.Name, Bezeichnung davor.

Also das ganze ist für eine Projektarbeit an der Uni, in der Aufgabenstellung steht was von Paaren, daher denke ich, dass zwei ausreichend sind.
Arbeiten dort mit mySQL. Habe gerade gegoogelt, my SQL kann diese array_agg nicht. Aber anscheinend geht das mit GROUP CONCAT. Mal schauen. Ich teste und berichte dann
 
Werbung:
Zurück
Oben