Autor | Zpráva | ||
---|---|---|---|
kat Profil * |
#1 · Zasláno: 2. 9. 2008, 13:26:48
Dobrý den, pořád ještě otravuji. Nemůžu stále vyřešit tento problém:
mám tabulku se zbožím a párovací tabulku k přiřazování zboží do skupin. Potřebuju, aby se mně vypsalo jen to zboží, které je ve všech skupinách. Zboží může být ve více skupinách. Sloučil jsem párovací tabulku pomocí GROUP_CONCAT, takže se mně objeví vípis: ID-ZBOZI | GROUP 1 12,13,15,18 2 7,12,14,15 a nyní potřebuji vybrat jen to zboží, které patří do skupin 7 a 15 a také dalších podle uživatele. Nevíte mně někdo prosím poradit? Děkuju moc. Můj kód: SELECT DISTINCT `eshop-zbozi`.`ID`, GROUP_CONCAT(`eshop-kategorie-zbozi`.`ID-KATEGORIE`) AS `GROUP` FROM `eshop-zbozi`,`eshop-kategorie-zbozi` WHERE `eshop-zbozi`.`ID`=`eshop-kategorie-zbozi`.`ID-ZBOZI` AND GROUP BY `eshop-zbozi`.`ID` HAVING 7 IN(`GROUP`) AND 15 IN(`GROUP`) AND |
||
Kajman_ Profil * |
#2 · Zasláno: 2. 9. 2008, 14:12:24
To `group` je jeden řetězec, proto nejde použít in, ale musít tam dát např.
http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_ find-in-set |
||
Kajman_ Profil * |
#3 · Zasláno: 2. 9. 2008, 14:15:58
Ale možná by mohlo být rychlejší použít něco jako...
select `ID-ZBOZI` from `eshop-kategorie-zbozi` where `ID-KATEGORIE` in (7,15) group by `ID-ZBOZI` having count(distinct `ID-KATEGORIE`)=2 |
||
kat Profil * |
#4 · Zasláno: 2. 9. 2008, 14:16:53
Děkuju, mrknu na to a napíšu sem, jak to dopadlo.
|
||
kat Profil * |
#5 · Zasláno: 3. 9. 2008, 15:49:47
Tak verze s FIND_IN_SET funguje bezvadně, děkuju mockrát.
|
||
Časová prodleva: 16 let
|
0