in Clause in Join

pooleleven

Benutzer
Beiträge
8
Hi,

bin mir nicht sicher ob es überhaupt geht. Die Tests verheissen aber nix Gutes.

Ich versuche gerade ein Statement (exemplarisch) folgender Art auf die Reihe zu bekommen:

Code:
select * from taba
left Join tabb on taba.spaltea in (tabb.spalteb)
group by taba.spaltex

In tabb.spalteb kann ein String in der Form "123,456,789" erwartet werden.

Beim Ausführen bekomme ich keine Fehlermeldung aber ein leeres Ergebnis. Der "manuelle" Versuch:

Code:
select * from taba
left Join tabb on taba.spaltea in (123,456,789)
group by taba.spaltex

liefert das erwartbare Ergebnis.

Vielleicht kennt ja hier jemand ja die Krux. Vielen Dank.
 
Werbung:
Für die Datenbank entspricht deine Aufzählung immer einem Feld, auch wenn die Syntax veilleicht Code (die Kommas) mit mehreren Werten entsprechen würde. Genauso kannst du kein Wert als Spaltennamen verwenden, für soetwas musst du mit dynamischem SQL arbeiten.

Dein GROUP BY dürfte für das Beispiel unerheblich sein und darf mit Select * auch nicht funktionieren.
 
Werbung:
Um das noch mal zu erklären: wenn in der Spalte steht: '123,456,789', dann wird Deine Condition zu ... on taba.spaltea in ('123,456,789'). Das ist ganz offensichtlich nicht das, was Du willst. Versuch auch nicht, das irgendwie hinzufrickeln. Wirf das DB-Design weg und mach es neu. Das Du bei dem GROUP BY keine Fehlermeldung bekommst liegt schlicht und einfach auch nur daran, daß MySQL den Fehler nicht sieht. Da ist er dennoch. MySQL liefert bei soetwas halt lieber ein inhaltlich falsches Resultat anstatt eines Fehlers. Wenn Du schon das DB-Design entsorgst, kannst auch gleich MySQL dazutun und was richtiges nehmen.
 
Zurück
Oben