Autor | Zpráva | ||
---|---|---|---|
sapo Profil * |
#1 · Zasláno: 25. 6. 2013, 09:28:50
Zdravim, mám dotaz a dost složitej :-) Mám v databázi uložené hodnoty třeba L,M,XL,XXL
Problém je dát podmínku. Když to dám jako like a někdo zadá xl, tak mu vyjede i zboží xxl. Krásně by to řešilo IN, ale to je bohužel jen na čísla. Nevíte někdo jestli je něco podobného jako IN nebo jak to řešíte vy? Děkuju |
||
Tori Profil |
Mělo by to být v jiné tabulce.
Nouzově se dá použít FIND_IN_SET, ale moc rychlé to nebude. |
||
sapo Profil * |
#3 · Zasláno: 25. 6. 2013, 09:35:12
jak v jiné tabulce? Problém by byl pořád stejný. Pořád by ty parametry museli být společně ve varcharu nebo textu
|
||
Joker Profil |
#4 · Zasláno: 25. 6. 2013, 09:39:54
sapo:
A nejde použít prostě = ?
Jinak velikosti by měly být ENUM, pokud pro každý záznam může být jen jedna, což je asi lepší varianta (sice nevím, co v té tabulce je, ale když si to představím jako nějaké zboží, na velikosti mohou záviset další parametry, třeba dostupnost, počet kusů k dispozici a podobně). Pokud je opravdu nezbytné, aby ty velikosti byly pohromadě, tak SET. |
||
sapo Profil * |
#5 · Zasláno: 25. 6. 2013, 09:45:11
nezbytné to bohužel je. Ono to zase tak hrozný doufám nebude. Děkuju tedy za rady a pro příště vím, že retezce se dají v dotazu řešit i mimo čísla :-)
|
||
Tori Profil |
sapo:
„jak v jiné tabulce?“ tabulka produkty id | název | ... tabulka dostupné_velikosti id_produktu | velikost ENUM | (cena - pokud se může lišit) tabulka parametry id_produktu | vlastnost | hodnota velikost = 'XL' + spojení tabulek. Pokud ten sloupec bude typu ENUM nebo SET, tak by FIND_IN_SET měla fungovat rychleji, než když je to řetězcový typ.
|
||
sapo Profil * |
#7 · Zasláno: 25. 6. 2013, 09:53:01 · Upravil/a: sapo
Jsem se díval na sestavení dotazu a je to nějaké zmatečné. FIND_IN_SET('1487', CONCAT(pssmID_list, ','));
Pro mojí potřebu by to mělo vypadat asi takhle? FIND_IN_SET('XL', velikosti); Děkuju všem moc. Už to maká. |
||
Časová prodleva: 11 let
|
0