Spezielle Query?!

ElJarno

Mitglied
Hi Leute,
habe Folgende Tabelle "Produkpalette" mit Spalten:

  • ID
  • Geschäftpartner_ID
  • Artikelgruppe_ID

Jetzt zu meiner Abfrage. Ich möchte gerne diejenigen Geschäftpartner selektieren die z.b die Artikelgruppe "Benzinmotoren" und "Dieselmotoren" in der Tabelle aufweisen. Also beide Kategorie beinhalten.
Mein Arbeitskollege hat dies hier vorgeschlagen:
Code:
SELECT * FROM GESCHAEFTSPARTNER WHERE GESCHAEFTSPARTNER_ID IN
(
    SELECT GESCHAEFTSPARTNER_ID FROM PRODUKTPALETTE WHERE ARTIKELGRUPPEN_ID IN
    (
        SELECT ARTIKELGRUPPE_ID FROM ARTIKELGRUPPE WHERE NAME IN ('Pumpen','Benzinmotoren')
    )
    GROUP BY GESCHAEFTSPARTNER_ID
    HAVING COUNT(*) = 2
)
Jedoch würde dies dann auch bei 2 zugeordneten Dieselmotoren funktionieren bzw. wär auch nur ein Abfrage nach 2 Artikelgruppen möglich.

Gruß Jan
 
1) Was für eine DB?
2) Ich versteh deine Fragen nicht. Es sind doch 2 Artikelgruppen. Was willst due genau haben?
 
1) MySQL
2) Also ich habe einen Geschäftpartner welche z.b Benzinmotoren und Dieselmotoren liefert
=> Ergibt 2 Datensätze in besagter Tabelle.
Ein anderer Geschäftpartner liefert nur Benzinmotoren oder Dieselmotoren.
=> Ergibt jeweils einen Datensatz.
Ich will nun über eine Anfrage nur den GP selektieren welcher beides liefert. Dies soll natürlich nicht starr sein sondern auch über mehrer Katergorien funktionieren, also einen GP welche Diesel-, Gas-, Benzin-, Elektro-, Wasserstoffmotoren u.s.w liefert, also belibieg viele Kategorien.
 
Dein Query liefert doch genau dies, was du möchtest.

Wenn du natürlich dein Subquery erweiterst:
SQL:
SELECT ARTIKELGRUPPE_ID FROM ARTIKELGRUPPE WHERE NAME IN ('Pumpen','Benzinmotoren','Gasmotoren','Wasserstoffmotoren')
Musst du Having auch anpassen:
SQL:
HAVING COUNT(*) = 4
Damit ist sichergestellt, das nur GP angezeigt werden, die alles liefern. Wenn du es aber variabel haben möchtest, brauchst du ja eine Eingabemaske für die Katergorien.
 
Zuletzt bearbeitet von einem Moderator:
Zurück