Raketenwilli: MySQL-Abfrage soll auch doppelte Einträge aus find_in_set liefern

Beitrag lesen

Wie kann ich diese nun so verknüpfen, dass ich in der Ergebnisliste auch der Artikel, der mehrfach vorkommt, mehrfach auftaucht?

Meine bisherige Abfrage liefert immer nur 1 Ergebnis pro Artikelnummer:

SELECT t2.* FROM tabelle1 as t1 LEFT JOIN tabelle2 as t2 ON find_in_set(t2.artnr, t1.artikelliste) where t1.artikelliste <> '' order by typ, bezeichnung, preis

Erst mal das Zitat:

A SET column can have a maximum of 64 distinct members.

Duplicate values in the definition cause a warning, or an error
if strict SQL mode is enabled.

Nur 64 verschiedene Artikelnummern? Das klingt nicht nach Zukunft…

Und jetzt?

Dein Aufbau ist fatal und fährt früher oder später gegen eine Wand. Schon jetzt ist erkennbar, dass der Join über das Set irgendwann zu einem inakzeptablen Performanceverlust führen wird, denn das kann man so auch nicht indizieren. Außerdem willst ja wohl kaum Tabellendefinitionen ändern, wenn ein Artikel dazu kommt oder gestrichen wird.

Lösung:

Löse das Set auf → neue Tabelle.

Dann klappt es auch mit select count.