Autor Zpráva
okolojdouci
Profil *
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
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
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 *
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í.

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