Stephan Huber: Beste Lösung für diese Abfrage

Beitrag lesen

Hallo Thomas,

Typ - 1 - 2 - 3 - 4 - 5
A   - X -   -   - X -
B   -   - X -   -   -
...

Jetzt möchte alle Nummern auflisten, wo Typ $typ ein "X" stehen hat. Ich habe lange darüber nachgedacht, wie das am einfachsten gehen könnte, mir fällt jedoch nichts sinnvolles ein. Vielleicht könnt ihr mir ja helfen

"select CONCAT(IF(typ1='X', '1,', ''), IF(typ2='X', '2,', '')), IF(typ3='X', '3,', '')) as alltypes from typtabelle where typ=A"
würde Dir eine eine Liste mit allen Nummern, getrennt durch "," zurückgeben, der select hier allerdings nur für die ersten drei Zahlen (der Übersicht wegen, wie es für fünf funktiniert, ist daraus ja wohl klar), typ1 usw. wären Deine Feldnamen.

Allerdings habe ich die Vermutung, daß Deine DB-Struktur nicht optimal ist, wenn Du mit Typ1-5 irgendwelche Eigenschaften bezeichnen willst, solltest Du entweder mit dem Feldtyp "SET" arbeiten, oder mit einer Detailtabelle.

Viele Grüße
Stephan