count(Arrays) aus DB

daisyduke1

Grünschnabel
Hallo ihr lieben,
ich hoffe ihr könnt mir helfen.

ich habe in der DB eine Spalte in der die einträge (Zahlen) so abgelegt werden 01|03|04|05 etc.
nun möchte ich das alle zahlen aus alle zeilen gezählt werden, sodas ich zB 01 = 30x vorhanden anzeigen kann.

soll eine statistik für die user sein.

dachte an sowas:

select count(01) from __artikel where 1

bekomme allerdings kein gültiges ergebnis.
habe schon einiges ausprobiert und komme einfach nicht auf die lösung :).
 
Hi

Nicht mehrere Zahlen in die selbe Zelle stopfen wäre die ideale Lösung... DB-Normalisierung, erste Regel.
Oder kann es nicht beeinflusst werden?
 
AUA!
Tu das nicht!. Normalisiere die Tabelle. Dann kannst du mit SQL arbeiten.
Hier eine Anleitung, wie du das bei MySQL einfach machen kannst: MySQL Normalisieren aus Liste
Du musst aber noch ein REPLACE(feld, '|', ',') anwenden, um aus deiner Liste ein Set zu erstellen. Test bei SQL Fiddle
SQL:
CREATE TABLE list_zuordnung
SELECT
   dat.id AS datId,
   cat.id AS catId
FROM
   list_cat AS cat,
   list_data AS dat
WHERE FIND_IN_SET(cat.id, REPLACE(dat.list, '|', ','))
ORDER BY dat.id, dat.id
 

Neue Beiträge

Zurück