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

Cybot 4t2.com-mysql at tekkno4u.de
Die Apr 15 12:27:14 CEST 2003


Wolfgang Hauck wrote:

> 
> ----------
> 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
> 
> 
jo, is aber für kategorien eher ungeeignet, würde ich sagen, da man ja 
meißtens eh noch mehr daten zu den kategorien in der db hat, also wäre 
eine verknüpfungstabelle sinnvoller

aber grundsätzlich stimmer ich dir natürlich zu, und ist so auf die 
schnelle natürlich auch einfacher

-- 
Sebastian Mendel

www.sebastianmendel.de
www.tekkno4u.de
www.nofetish.com

-- 
Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter
-->>  http://www.4t2.com/mysql 


php::bar PHP Wiki   -   Listenarchive