Portál AbcLinuxu, 25. července 2025 05:02
SELECT id FROM auto
WHERE NOT EXISTS(SELECT * FROM auto, pracovnik
WHERE pracovnik.auto=auto.id;
Smyslem dotazu je, aby mi vrátil id auta, které nemá záznam v tabulce pracovnik. Tedy není mu přidělen žádný pracovník. Jenže tenhle dotaz mi vrací No rows selected
ikdyž vím, že mám v db neobsazená auta, tedy mezi tabulkou auto a pracovník žádná vazba doopravdy není. Kde dělám prosím v dotazu chybu? Díky.
Řešení dotazu:
SELECT id FROM auto WHERE NOT EXISTS(SELECT * FROM pracovnik WHERE pracovnik.auto=auto.id );
SELECT id FROM auto EXCEPT SELECT auto FROM pracovnik;pro MySQL a jine DB toto nepodporujici lze prepsat na:
SELECT id FROM auto WHERE id NOT IN (SELECT auto FROM pracovnik);
A co dotaz pro zjisteni neobsazenych aut:
SELECT auto.id FROM auto
LEFT JOIN pracovnik ON auto.id=pracovnik.auto
WHERE pracovnik.id is NULL;
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.