私は SQL にまったく精通していないので、子テーブルにレコードがない親テーブルのすべてのレコードを検索するクエリについて誰かが助けてくれることを期待しています。
特定の子フィールド値の親レコードを見つけるには、次の方法が有効です...
`SELECT ParentTable.ParentID
FROM ParentTable INNER JOIN
ParentTable ON ParentTable.ParentID = ChildTable.ChildID
WHERE (ChildTable.ChildField_ = '2131')
Group By
ParentTable.ParentID
Having
count(distinct ChildTable.ChildField) > 0`
子レコードの数がゼロの親を見つけるために、where 句を変更することはできますか。
ありがとう。
ベストアンサー1
NOT EXISTS
これには句を使うことができます
SELECT ParentTable.ParentID
FROM ParentTable
WHERE NOT EXISTS (
SELECT 1 FROM ChildTable
WHERE ChildTable.ParentID = ParentTable.ParentID
)
古いものもあります左結合してnullをチェックするアプローチ
SELECT ParentTable.ParentID
FROM ParentTable
LEFT JOIN ChildTable
ON ParentTable.ParentID = ChildTable.ParentID
WHERE ChildTable.ChildID IS NULL
両方を試してみて、どちらが自分に適しているかを確認してください。