1

JOIN簡単なクエリでもまだ苦労しています。最後の質問であるSimple but nested SELECT queryから、多くのことを学びましたが、それでもJOINクエリを実行できませんでした。:(

最後の質問からこのクエリがあり、機能しています:

SELECT c.value, d.value 
FROM a
LEFT JOIN b
    ON a.id = b.idy
LEFT JOIN c
    ON b.idx = c.id
LEFT JOIN d
    ON b.idx = d.id
WHERE a.name = "test" 

ここで、クエリに別の条件を追加してテーブルを調べ、テーブルにDOESN'Te,f,gのいずれかが存在する場合は結果を返します。たとえば、存在する場合、 table から行を削除する必要があります。に存在する場合、続行しないでください。クエリから を削除した場合、他の部分は何も返さないはずだからです。a.id, b.idx, c.id, d.id e,f,gc.ide.idca.idg.ida.id

ここでSQLコードを見ることができるサンプルデータベース構造を作成しました:Sample.sql

4

2 に答える 2

2

このようなことを意味しますか?

SELECT c.value, d.value 
FROM a
LEFT JOIN b
    ON a.id = b.idy
    AND b.id NOT IN (SELECT e.id FROM e UNION ALL SELECT f.id FROM f UNION ALL SELECT g.id FROM g)
LEFT JOIN c
    ON b.idx = c.id
    AND c.id NOT IN (SELECT e.id FROM e UNION ALL SELECT f.id FROM f UNION ALL SELECT g.id FROM g)
LEFT JOIN d
    ON b.idx = d.id
    AND d.id NOT IN (SELECT e.id FROM e UNION ALL SELECT f.id FROM f UNION ALL SELECT g.id FROM g)
WHERE a.name = "test" 
AND a.id NOT IN (SELECT e.id FROM e UNION ALL SELECT f.id FROM f UNION ALL SELECT g.id FROM g)
于 2012-09-21T07:57:46.670 に答える
2

SQL の方言についてはわかりませんが、MySQL では次を使用できます。

AND NOT EXISTS(SELECT 1 FROM e WHERE e.idx = b.idx)
于 2012-09-21T07:58:07.733 に答える