Autor Zpráva
sapo
Profil *
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 *
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
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 *
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)
anebo místo dostupných velikostí univerzálnější tabulka:
tabulka parametry
id_produktu | vlastnost | hodnota
Pak by se dalo hledat pomocí 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 *
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);
Moc těm příkladům nerozumím. Vždycky když koukám na nějaký manuál, tak to vysvětlujou složítě. Když takovej manuál vidim, tak by sem je nakop. Zkušenej jim na něj prdí a lidi jako já to nepochopí. Tak na co potom ty rádoby návody jsou? :-)


Děkuju všem moc. Už to maká.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0