Ilja: MySQL: Knifflige Gruppenabfrage

Beitrag lesen

yo Kalle,

wie du weiter unten geschrieben hast, kann ein besucher nur zu einer gruppe gehören oder gar keine. somit liegt eine 1:n beziehung vor und die tabelle besucher_zu_gruppen ist überflüssig. indem du die gruppen_id mit in die tabelle adressen mit rein nimmst, deckst du die beziehung ausreichend ab.

folglich würde sich dann auch die tabelle kontakte ändern, dort würde die gruppen_id rausfliegen.

je nachdem ob du dein design ändern willst oder nicht, sieht die abfrage entsprechend aus. wenn ich dein ziel richtig verstanden habe willst du abfragen: zeige mir für einen besucher alle seine gruppenmitglieder, die ebenfalls einen bestimmten aussteller besuchen wollen.

SELECT hier_die_gewünschten_spalten
FROM kontakte k
WHERE k.aussteller_id = $input_aussteller AND
 (k.besucher_id= $input_aussteller OR k.id IN
   (
   SELECT k2.id
   FROM kontakte k2
   WHERE k2.gruppen_id = k.gruppen_id
   AND k2.austeller_id = $input_aussteller
   )
 )

versuch das mal auf dein jetztiges datendesign anzuwenden. ich kann mich nur nicht mehr erinnern, ob du unterabfragen abfragen kannst, sprich mysql 4.1+ hast.

Ilja