Autor | Zpráva | ||
---|---|---|---|
pEeLL Profil |
#1 · Zasláno: 21. 8. 2009, 14:00:04
Ahoj
mel bych db a vni dve tabulky prvni "produkty" id / nazev / cena/ obrazek / atd druha "parametry produktu" id/ id produktu / parametr / hodnota parametru a ted by me zajimalo jak co nelepe vybirat produkty prodle parametru. napr u pocitacu by byl parametr treba pamet a hodnota jeji velikost, u procesoru jeho rychlost aj. jaky je nejlepsi dotaz kdyz budu chtit najit produkty jejichz pamet je 1gb a procesor 2ghz ? 1, je vhodna strktura db nebo by bylo lepsi zvolit jinou ? 2, dotaz jsem delal tak ze jsem nejdriv pomoci SELECT DISTINCT produkt_id ...WHERE podminky - ziskal id produktu ktere vyhovovaly parametrum a pak pomoci druheho dotazu SELECT neco FROM producty WHERE id IN vysledek prvniho dotazu - ziskal produkty je to vhodny postup (nejak se mi nelibi)? jde to nejak zlepsit (o slouceni dotazu vim)? jde mi jen o obecny postup ne o presne db dotazy Diky |
||
Kajman_ Profil * |
#2 · Zasláno: 21. 8. 2009, 14:29:46
Zkusil bych něco takového
select pr.* from produkty pr join (select id_produktu from parametry where (parametr = 'pamet' and hodnota = '1gb') or (parametr = 'procesor' and hodnota = '2ghz') group by id_produktu having count(distinct parametr) = 2 /*pokud hledam oba parametry platici zaroven*/) pa on pr.id = pa.id_produktu |
||
tiso Profil |
#3 · Zasláno: 21. 8. 2009, 14:38:59
1) Na toto sa nedá univerzálne odpovedať, záleží či majú produkty rovnaké parametre, alebo sa líšia, dajú sa rozdeliť na málo skupín s rovnakými parametrami, atď...
Myslím že tu bola spomínaná štruktúra s 3 tabuľkami: products(...) params(id, name, desc, ...) products_params(product_id,param_id, value) 2) malo by to ísť aj jedným dotazom |
||
pEeLL Profil |
#4 · Zasláno: 21. 8. 2009, 15:39:27
Kajman_
diky moc za inspiraci |
||
Časová prodleva: 15 let
|
0