phpbar.de logo

Mailinglisten-Archive

Select-Frage: select kat, count(*) from table group by kat - aber spezieller...

Select-Frage: select kat, count(*) from table group by kat - aber spezieller...

Wolfgang Hauck wbh at euta.net
Die Apr 15 11:49:36 CEST 2003



----------
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