Ilja: (MySQL) brauche Hilfe bei komplizierter(?) Abrage

Beitrag lesen

hi Knud,

Das Problem ist, dass ich in einer Tabelle in einem Feld 4stellige Artikelnummern durch Komma getrennt drinstehen habe.

der aufbau deiner tabelle ist meiner meinung nicht so geschickt. deine tabelle widerspricht der 1. Normalform. das ist nun kein weltuntergang, aber ich würde dir raten, für jede artikelnummer einen extra datensatz zu benutzen.

das hört sich ein wenig nach einer tabelle für eine bestellung eines kunden an und soll alle artikel auflisten, die er bestellt hat. ich schätze mal, du hast eine tabelle für keunden und eine für artikel. die beiden tabellen stehen in einer beziehung n:m und sollten somit in einer beziehungstabelle (bestellungen) miteinander verknüpft werden. dabei würde sich an bieten, die artikelnummer, die kundennummer und das bestelldatum als zusammengesetzten schlüssel für die bestelltabelle zu nehmen. jede bestellung eines artikels druch einem kunden and einem tag würde damit einen datensatz ergeben

Dabei schwankt die Anzahl der Artikel im Feld zwischen 0 und x.

diese variation würde dann wegfallen, du hast also immer nur einen artikel pro datensatz in der bestelltabelle

Jetzt möchte ich eine Abfrage generieren, die mir eine Liste der vorkommenden Artikelnummern bringt, sortiert nach der Anzahl.

gehen wir mal weiter von meiner anahme aus, würde du nun die tabelle bestellung nach der kundennummer grouppieren (group by) und eine aggregatfunktion anwenden, die die anzahl der artikel zählt, nämlich sum (artikelnummer)

Gibt es eine Möglichkeit innerhalb der Abfrage das Artikel-Feld aufzusplitten und die Einzelteile zu zählen?

das würde auch gehen, halte ich aber für keine gute lösung. ob es direkt mit mysql geht, will ich mal offen lassen, aber mit mit php oder perl klappt es

Ilja