Autor Zpráva
darius1706
Profil
Ahoj, mám následující tabulky:

tabulka a:
id_a
value_a

nyní k ní tabulku:

tabulka b:
id_b
id_a
value

jsou k sobě 1:N kdy id_a je v tabulce b jakoby cizí klíč (ale jen paírově, není to nastaveno).

Potřebuji zjistit, všechny záznamy v tabulka_b, u kterých není odpovídající záznam v tabulka_a, tedy kdy ta vazba chybí. Jak to udělat? Už se tu s tím trápím půl dne. Díky Radek


Paron, jedná se o MySQL. Radek
juriad
Profil
SELECT * FROM tabulka_b b
WHERE b.id_a NOT IN (SELECT DISTINCT a.id_a FROM tabulka_a a)
darius1706
Profil
juriad:
Děkuji velmi, jako obvykle jednoduché řešení řeší problém a já tu půl dne řeším zběsilosti. Díky moc!!!
Tori
Profil
darius1706:
Potřebuji zjistit všechny záznamy v tabulka_b, u kterých není odpovídající záznam v tabulka_a
Dá se to říct i přesně tak, jak jste to napsal:
select b.* from tabulka_b b
where not exists (select * from tabulka_a a where b.id_a = a.id_a)
Jestli jsem správně pochopila explainy těch dotazů (na maličkém vzorku dat), tak ve výsledku to je totéž. Třetí variantu (left join .. where a.id_a is null) si MySQL zoptimizuje na not exists.

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: