SQL-ben hogy tudok kiválasztani így egy sort?
Van két táblám, pl. gazda meg kutya.
Azokra a sorokra van szükségem a gazda táblákból, amely gazdáknak nincs kutyája, vagy valamelyik kutyája kevesebb mint 3 éves. Vagy inkább két lekérdezésből kéne megoldani?
SELECT gazdaid FROM gazdák
WHERE gazdaid NOT IN(SELECT gazdaid FROM kutyák)
OR gazdaid IN(SELECT gazdaid FROM kutyák WHERE kutyakor<3)
Szerintem, aztán lehet, hogy ez nem is jó.
Ajj, azt hiszem kell összekapcsolás is, tehát:
SELECT gazdaid FROM gazdák
JOIN kutyák ON kutyák.gazdaid=gazdák.gazdaid
WHERE gazdaid NOT IN(SELECT gazdaid FROM kutyák)
OR gazdaid IN(SELECT gazdaid FROM kutyák WHERE kutyakor<3)
Tényleg kell a táblaszerkezet, mert ráadásul rosszul fogalmaztam meg a kérdést. :(
szóval, van egy tábla, ami az oltásokat tartalmazza, és egy ami azt hogy mely oltások hányszor lettek beadva kutyáknak, illetve egy kutya tábla, de onnan csak az azonosító kell
oltás tábla:
id
oltasneve
beadott:
oltasid
kutyaid
beadasokszama
szóval egy bizonyos kutya id-hez melyek azok az oltasok, amiket még sosem adtunk be, vagy kevesebb mint háromszor adtunk be.
(nyilván nem ez az eredeti feladat, csak azt még ennyire sem tudnám megfogalmazni... :D)
Így esetleg:
SELECT
g.*, k.nev AS kutyanev
FROM
gazda g
LEFT JOIN
kutya k ON k.gazda_id = g.id
WHERE
k.id IS NULL OR k.kutyakor < 3
A második legkerülendőbb dolog az sql-ben a subselect, ha nem kényszerít valami ne használd.
(A legkerülendőbb meg a view, azt csak ha fizetnek érte)
A subselectel sokmindent meg lehet csinálni. A view meg nem más mint egy olyan select, ami táblaként látszik, és lekérdezel belőle.
Ami miatt érdemes meggondolni ezeket, az pedig a performancia issue. De sokszor elkerülhetetlen, de okosan indexelve, és a felhasználás gyakoriságát tekintve nincs vele gond.
Egyébként szerintem jobb egy view, mint egy alkalmazás oldalon tárolt bonyolult query.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!