Autor Zpráva
pEeLL
Profil
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 *
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
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
Kajman_
diky moc za inspiraci

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