Sören: [MySQL] m:n Relation. Eine id mit bestimmten Kriterien bestimmen

Beitrag lesen

Hallo

äh, alles in einer einzigen Abfrage?

Ja, die queries sollten sich nur in den verschieden angegebenen groupids unterscheiden.

Was hast du bis jetzt selbst zustande gebracht?

Tut mir leid das hatte ich vergessen zu schreiben:

Fürs erste Beispiel sieht mein query so aus:

SELECT rightid FROM group_to_right gtr WHERE EXISTS (SELECT 1 FROM group_to_right exists_gtr1, group_to_right exists_gtr2 WHERE gtr.rightid = exists_gtr1.rightid AND gtr.rightid = exists_gtr2.rightid AND exists_gtr1.groupid = 1 AND exists_gtr2.groupid = 2) AND NOT EXISTS (SELECT 1 FROM group_to_right not_exists_gtr1, group_to_right not_exists_gtr2 WHERE gtr.rightid = not_exists_gtr1.rightid AND gtr.rightid = not_exists_gtr2.rightid AND not_exists_gtr1.groupid = 3 AND not_exists_gtr2.groupid = 4) LIMIT 0,1

Ist jedoch etwas komplex, aber sollte funktionieren.
Das ist mein bisheriger Ansatz, jedoch denke ich nicht, dass der query effizient ist. Zudem muss ich den mühselig mit php zusammenbauen.

Gibt es da eine einfachere und effizienter variante?

Ansonsten heissen die Stichworte für dich: DISTINCT, IN, UNION ALL

Danke werde ich mir mal anschauen.

Wenn du irgendwo NULL sehen willst, dann käme wohl noch ein LEFT OUTER JOIN dazu.

Tut mir leid habe mich vertan, mit NULL meinte ich einen leeren Datensatz

Das mit "groupid" sieht etwas nach Permutation aus.

Ist das nicht bei jeder m:n relation so?

Gruß Sören