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