| Autor | Zpráva | ||
|---|---|---|---|
| Bildr Profil |
#1 · Zasláno: 23. 6. 2008, 20:31:03
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 * |
#2 · Zasláno: 23. 6. 2008, 20:40:51
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 |
#3 · Zasláno: 23. 6. 2008, 22:12:35
Díky moc, funguje to jak má
|
||
| Bildr Profil |
#4 · Zasláno: 24. 6. 2008, 18:25:23
No, ono to sice funguje, ale pomalé to je jako čert :-/ Budu muset něco vykoumat
|
||
| Kajman_ Profil * |
#5 · Zasláno: 24. 6. 2008, 21:17:30
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.
|
||
|
Časová prodleva: 17 let
|
|||
0