Michael Schröpl: (MySQL) n:m-Relation

Beitrag lesen

Hi Olaf Schneider,

dazu jedoch eine Pseudospalte, die zurückgibt, ob
für das Element E eine Beziehung in table_relation
zu table_rechts für die jeweilige Spalte existiert.

wofür brauchst Du das?

Leider komme ich mit den verschiedenen JOINS nicht
weiter.

Ich schätze, das liegt daran, daß Du nicht "in SQL denkst".
Eine Liste von Flags, wie Du sie erzeugen willst, ist keine 'natürliche' Datenstruktur von SQL. Dort würde man diese Information mit einer oder zwei Mengen ausdrücken - und diese kannst Du mit JOINs sicherlich berechnen.

Denke in Mengen, solange Du Dich in SQL bewegst.
Wenn Du diese Flags nur in einer algorithmischen Sprache brauchst, dann kannst Du sie auch noch am Interface zwischen diesen beiden Sprachen berechnen.

Auch möchte ich UNION nicht benutzen, da die Abfrage
auch vor Version 4 laufen soll.

Mir ist klar, daß Dein Problem mit einer besseren Datenbank(-version) sehr viel einfacher zu lösen wäre.
Gerade in Deinem Fall sind die reinen Mengenoperationen (ich würde den MINUS-Operator vorschlagen) das, was Du eigentlich brauchen würdest.

Da mySQL gerade hier seine Schwächen hat, solltest Du Deine Hoffnungen darauf leden, daß Du in Deiner Aufgabenstellung Platz für einen alternativen Lösungsansatz findest - deshalb habe ich Deinen Lösungsweg hinterfragt.
Du wirst mich erst überzeugen müssen, wofür Du diese Liste unbedingt in diesem Format brauchst.

Momentan habe ich das Problem in php gelöst, aber
eigentlich ärgert mich das; das müßte doch auch
anders gehen, oder?

Vielleicht nicht. Wenn Du eine Dose mit einer Nagelfeile zu öffnen versuchst, dann wird Dir das nicht so locker von der Hand gehen wie mit einem Dosenöffner.

Und es kann auch durchaus sein, daß Du ein 3GL-Konstrukt von PHP benötigst, um die Defizite der 4GL-Konstrukte von mySQL zu kompensieren - beispielsweise, indem Du den MINUS-Operator dort als Listenverarbeitung implementierst.

Viele Grüße
      Michael