1

MAPテーブルを介して結合された2つのテーブルがあります

Table ANIMAL:
+------+--------------+
| id   |  description |
+------+--------------+
|  2   |  Ape         |
|  3   |  Lion        |
+------+--------------+


Table MAP:
+-----------+---------+
| animal_id | legs_id |
+-----------+---------+
|   2       | 11      |
+-----------+---------+


Table LEGS:
+------+--------------+
|  id  |     legs     |
+------+--------------+
| 10   |      4       |
| 11   |      2       |
+------+--------------+

LEGSテーブルにマップエントリがない動物が必要です。次のようになります。

 !(select *  
  from ANIMAL as a  
  JOIN MAP as m ON (a.id = m.animal_id)  
  JOIN LEGS as l ON (m.legs_id = l.id) )

結果として私に「ライオン」を与えるはずです

4

4 に答える 4

6

使用するLEFT JOIN

SELECT  a.*
FROM    animal a
        LEFT JOIN Map b
            On a.id = b.animal_id
WHERE   b.animal_id IS NULL

結合についてさらに知識を深めるには、以下のリンクにアクセスしてください。

于 2013-02-11T08:20:36.523 に答える
4

これを試して :

SELECT a.*
FROM animal a
WHERE a.id NOT IN (SELECT animal_id FROM Map m JOIN Legs l
                   ON m.legs_id = l.id)
于 2013-02-11T08:21:50.357 に答える
4
Select * from Animal A
left join Map M on A.id=M.animal_id
where M.animal_id is null;
于 2013-02-11T08:21:01.493 に答える
0

マップレコードが関連付けられていないすべての動物を返す簡単なクエリを実行できませんでした...つまり

SELECT
   *
FROM
   Animal
WHERE
   animal_id not in (SELECT animal_id FROM Map)
于 2013-02-11T08:22:47.320 に答える