Mailinglisten-Archive |
---------- Von: Cybot[SMTP:4t2.com-mysql at tekkno4u.de] Antwort an: mysql-de at lists.4t2.com Gesendet: Dienstag, 15. April 2003 09:55 An: mysql at kundensystem.com; mysql-de at lists.4t2.com Betreff: Re: Select-Frage: select kat, count(*) from table group by kat - aber spezieller... Karsten Schätzer wrote: > Hallo Liste, >> in dieser Tabelle sind die Daten wie folgt abgelegt: >> 1 a test at test.de >> 2 b test2 at test.de >> 3 a,b test3 at test.de >> 4 a,b test4 at test.de >> 5 b test5 at test.de > >> Nun würde ich gern von meiner SQL-Anweisung wissen wollen, wie viele > >haben die Kategorie a und wie viele haben die Kategorie b. Dabei ist nur [...] >normalerweiße würde man das mit einer weiteren tabelle lösen: Hi Sebastian, Aber nein, brauchts doch gar net... ;-) Da muss er nur folgendes machen: http://www.mysql.com/doc/de/SET.html lesen... Wenn in einer SET-Spalte eine Zahl gespeichert wird, legen die Bits, die in der binären Darstellung der Zahl gesetzt sind, die SET-Elem ente im Spaltenwert fest. Angenommen, eine Spalte ist als SET("a","b","c","d") festgelegt, dann haben die Elemente folgende Bitwerte: SET Element Dezimalwert Binärwert a 1 0001 b 2 0010 c 4 0100 d 8 1000 ALTER TABLE `tabelle` CHANGE `set_spalte` `set_spalte` as SET("a", "b","c",[...]) NOT NULL Und jetzt kann er suchen: SELECT * FROM tabelle WHERE set_spalte LIKE '%a%'; # Alles mit Kategorie a oder: SELECT * FROM tabelle WHERE FIND_IN_SET('a',set_spalte)>0; # Alles mit Kategorie a oder: SELECT * FROM tabelle WHERE set_spalte = 'a,c'; # Alles mit Kategorie a UND ! c oder: SELECT * FROM tabelle WHERE set_spalte AND 1; # Alles mit Kategorie a oder: SELECT * FROM tabelle WHERE set_spalte OR 3; # Alles mit Kategorie a ODER b ... MfG Wolfgang -- Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter -->> http://www.4t2.com/mysql
php::bar PHP Wiki - Listenarchive