Autor | Zpráva | ||
---|---|---|---|
okolojdouci Profil * |
#1 · Zasláno: 21. 6. 2011, 17:23:11
Mám několik tabulek
1. Firmy 2. Specializace 3. v_firmy_specializace - vazba mezi firmou a specializací 4. Adresy (mj. sloupec IDfirmy a sloupec IDkraje) A chci vypisovat firmy, které mají požadovanou specializaci a které mají přinejmenším jednu pobočku v požadovaném kraji. select firmy.ID as kID, firmy.cooluri, firmy.nazev from firmy left join adresy on adresy.IDfirmy = firmy.ID left join v_firmy_specializace on v_firmy_specializace.IDfirmy = firmy.ID and v_firmy_specializace.IDspecializace = 2 where adresy.IDkraje=3 Toto mi něco vypisuje, ale většina z těch kombinací, které v těch tabulkách jsou, se nevypíše. Co dělám špatně? |
||
Sir Tom Profil |
#2 · Zasláno: 21. 6. 2011, 19:09:33
okolojdouci:
Řekl bych, že po spojení tabulek by měla být klauzura WHERE a po ní pak AND (prostě 2 podmínky spojené konjukcí za WHERE). |
||
TomášK Profil |
#3 · Zasláno: 21. 6. 2011, 22:22:00
Ten dotaz vypadá v pořádku. Místo LEFT JOINů stačí (INNER) JOIN, výsledek bude stejný a je to o něco rychlejší. Pokud bude v kraji jedna firma víckrát, vypíše ji to víckrát. Koukni se, jestli to vrací to, co očekáváš, pokud vynecháš specializaci nebo adresu.
|
||
okolojdouci Profil * |
#4 · Zasláno: 23. 6. 2011, 19:33:09
Díky. Zkusím se s tím nějak poprat. Připadá mi zvláštní, že mi to při tisících firem a adres vrací jednotky řádků. A přitom jsem tam ručně dohledal kombinace, které mi ten dotaz nevrací.
|
||
Časová prodleva: 13 let
|
0