Autor Zpráva
Bildr
Profil
Narazil jsem na problém s výběrem dat z mysql databáze, který neumím vyšit bez intersect. Problém spočívá v tom, že mám 2 tabulky, jedna obsahuje ID a druhá má několik řádků s parametry (sloupce) k danému ID. Počet parametrů (řádků) ke každému ID je různý. Já potřebuji vybrat takové ID pro které platí že má parametr (hodnotu vybraného sloupce) např. 2, 8, 10 a 89. Běží to na nějakém MySQL 3, změnu si asi nevydupu. Takže nemám intersect ani podselecty.

Jde to udělat nějak jinak než v phpku zbastlit několik selectů do sebe? Thanx za rady...
Kajman_
Profil *
Nejjednodušší je přejít na vyšší verzi mysql. V 4.0 a nižší jsou asi dvě možnosti

select i.* from tabulka_id i, tabulka_parametru t where i.id=t.id and t.sloupec in (2,8,10,89) group by t.id having count(distinct t.sloupec)=4

nebo

select i.* from tabulka_id, tabulka_parametru p1, tabulka_parametru p2, tabulka_parametru p3, tabulka_parametru p4
where
i.id=p1.id and p1.sloupec=2 and
i.id=p2.id and p2.sloupec=8 and
i.id=p3.id and p3.sloupec=10 and
i.id=p4.id and p4.sloupec=89 and
Bildr
Profil
Díky moc, funguje to jak má
Bildr
Profil
No, ono to sice funguje, ale pomalé to je jako čert :-/ Budu muset něco vykoumat
Kajman_
Profil *
Zkonzultuje to s explain. Jestli tam nemáte index (sloupec,id), tak začněte tam. A přechod na novější verzi db také můžete zkusit. Pak se dají psát dotazy lépe.

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