从一个表中查询与另一个表没有关系的行

时间:2013-11-19 12:18:59

标签: android sql sqlite join

我有3张桌子 1.设备(id,deviceno,devicename)
2.程序(id,programname)
3. programdevices(id,programid,deviceid)

现在我需要两个 1.与给定程序有关系的所有设备
2.与给定programid没有关系的所有设备

我尝试了以下

SELECT d.id, d.deviceno, d.devicename FROM devices d
LEFT JOIN programdevices pd ON pd.program = 3 and pd.device = d.id
WHERE pd.device is null / is not null

但我总是得到一个空洞的结果。 感谢大家指出我正确的方向

2 个答案:

答案 0 :(得分:0)

试试这个:

SELECT d.id, d.deviceno, d.devicename, case when pd.programid IS null then 'NO' else 'YES' End as Relation  FROM devices d LEFT JOIN programdevices pd ON pd.device = d.id

使用此功能您将获得列Relation的所有设备。如果关系字段为YES,那么如果NO您没有关系,则您有其他关系。

答案 1 :(得分:0)

你可以试试这个。我想它可以帮到你...

    SELECT d.deviceno, d.devicename, p.programname
    FROM devices d
    JOIN programdevices pd ON pd.deviceid = d.id
    JOIN programs p ON p.id = pd.programid
    WHERE p.id !=3
    LIMIT 0 , 30