Autor Zpráva
suvel
Profil
Omlouvám se za nepřesný název tématu, ale na nic lepšího jsem nepřišel.

Zjednodušeně: Mám tabulku firem se sloupcem firma.ico. Každá firma může mít několik provozoven - ty jsou v tabulce provozovny se sloupci provozovna.ico a provozovna.mesto (první sloupec samozřejmě koresponduje s firma.ico).
Problém nastává, jestliže chci vypsat firmy, které NEMAJÍ žádnou provozovnu v Praze:

tabulka provozovna:
1    Praha
1    Brno
2    Brno
2    Ostrava

SELECT firma.ico FROM firma LEFT JOIN provozovny ON `firma.ico`=`provozovna.ico` WHERE `provozovna.mesto` != 'Praha'

Jenže to mi vypíše firmu 1 i firmu 2, zatímco já potřebuju jen firmu 2...

A tady bych potřeboval radu - nějak se nemůžu hnout z místa :-( Díky předem.
juriad
Profil
SELECT firma.* FROM firma WHERE firma.ico NOT IN ( SELECT provozovna.ico FROM provozovna WHERE mesto = 'Praha' )
Vyber takové, které nejsou na seznamu firem s provozovnou v Praze.
Kajman
Profil
Případně to lze zapsat i přes ten left join
SELECT firma.ico
FROM   firma
       LEFT JOIN provozovna
              ON `firma`.`ico` = `provozovna`.`ico`
                 AND `provozovna`.`mesto` = 'Praha'
WHERE  `provozovna`.`ico` IS NULL  
suvel
Profil
Díky oběma :-)

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: