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

Beitrag lesen

In meiner Anwendung läuft es im Moment mit einer Liste von aktuell 419 unterschiedlichen Artikeln. Und dies ist das maximale Extrem. Üblich sind nicht mehr als 3-4 Einträge. Sicherlich weil das Feld nicht vom Typ "Set" ist, sondern vom Typ "longtext".

Dein „set“ ist also sogar gar kein „set“.

Das ist „abenteuerlich“ - und ich betone, diese Bezeichnung ist höchst zurückhaltend. Es gibt Wörter, die haben mit dem Endprodukt eines biologisch-gastronomischen Prozesses zu tun, die wären „treffend“.

In meiner Anwendung läuft es im Moment

Eigentlich ja schon nicht mehr. Das Konstrukt erfüllt den Punkt „gleiche Artikelnummern sollen gezählt ausgegeben werden können“ nicht. (Das geht schon, aber eben nicht ohne einen riesigen Aufwand)

Es mag Arbeit machen, aber wenn Du ordentliche Ergebnisse willst brauchst Du ordentliche Tabellen und eben nicht Tabellen als Sets in Tabellen, für die Du dann auch noch Textfelder missbrauchst. (Genau genommen hast Du also CSV in der Tabelle.)

Find_in_set funktioniert ja auch wunderbar mit Textfeldern.

Den Satz „MySQL provides a built-in string function called FIND_IN_SET() that allows you to find the position of a string within a comma-separated list of strings.“ haben diverse Tutorials voneinander abgeschrieben, er steht nicht in der offiziellen Dokumentation. Möglicherweise wird für FIND_IN_SET() also irgendwann ein tatsächliches Set verlangt.

Möglicherweise funktioniert das ergo nur bis zum nächsten Update. Also hast Du entweder später noch viel mehr Arbeit oder machst keine Updates mehr. Was dann irgendwann vielleicht dazu führt, das Du vor die Kunden treten und denen mitteilen musst, dass deren persönliche Daten abgeflossen sind.

ToDo: Mach es gleich richtig.