Autor Zpráva
epsilon
Profil
Zdravím všetkých.
Povedzme, ze mám dve tabuľky T1: vec|mnozstvo|jednotka a T**********: vec|cojeto, ktoré sú v relácii 1:N.
Potrebujem urobiť SQL dotaz, ktorý mi vypíše z T1 určené veličiny spolu s danými jednotkami ale iba také, ktoré sa nenachádzajú v T**********. Čiže ak napr.
T1=
voda|1|liter
**********|**********|**********
melon|10|**********
pivo|**********0|liter
a
T**********=
voda|tekutina
voda|kvapalina
voda|H_**********O
melon|ovocie,
tak by som napr. chcel, aby mi vypísalo iba "vec", ktorej jednotka je "**********" ale nenachádza sa v T**********. V tomto prípade by to bol "**********". (V skutočnosti je to trochu komplikovanejšie, ale všetko mi fachčí až na to, čo som napísal.) Fakt už neviem, čo by som vyskúšal.
Za každú dobrú radu vopred ďakujem Epsilon
epsilon
Profil
Hups, nejako to čudno vyzerá, ani sám po sebe to neviem prečítať. Takže skúsim ešte raz s vypnutým formátovaním.
Zdravím všetkých.
Povedzme, ze mám dve tabuľky
TabA(vec,mnozstvo,jednotka)
a
TabB(vec,cojeto)
ktoré sú v relácii 1:N.
Potrebujem urobiť SQL dotaz, ktorý mi vypíše z TabA určené veličiny spolu s danými jednotkami ale iba také, ktoré sa nenachádzajú v TabB. Čiže ak napr.
TabA=(voda,1,liter),(banan,2,kg),(melon,10,kg),(pivo,20,liter)
a
TabB=(voda,tekutina),(voda,kvapalina),(voda,H2O),(melon,ovocie)

tak by som napr. chcel, aby mi vypísalo iba vec, ktorej jednotka je kg ale nenachádza sa v TabB. V tomto prípade by to bol banan. (V skutočnosti je to trochu komplikovanejšie, ale všetko mi fachčí až na to, čo som napísal.) Fakt už neviem, čo by som vyskúšal.
Za každú dobrú radu vopred ďakujem Epsilon
FantomX1
Profil
Takze da sa to spravit dvomi sposobmi, ale rozoberiem asi len jeden :)
Vyberies

SELECT meno_veci AS vec FROM tabA WHERE NOT EXISTS (SELECT 1 FROM tabB WHERE meno_veci=vec) AND jednotka='kg';
Kajman_
Profil *
Já bych použil ten druhý sposob.

select a.* from TabA a left join TabB b using vec where b.vec is null and jednotka='kg'
FantomX1
Profil
A tak skusim aj druhy

SELECT tabA.meno_veci FROM tabA LEFT JOIN tabB ON tabA.meno_veci=tabB.meno_veci WHERE jednotka='kg' GROUP BY tabA.meno_veci HAVING count(tabB.meno_veci)=0
FantomX1
Profil
A, tak existuju tri sposoby, no kajmanov je najelegantnejsi, tak nic :)
epsilon
Profil
Vdaka, funguje hned to prve!
Toto téma je uzamčeno. Odpověď nelze zaslat.

0