Android 从一个与另一个表没有/没有关系的表中查询行
我有三张桌子Android 从一个与另一个表没有/没有关系的表中查询行,android,sql,sqlite,join,Android,Sql,Sqlite,Join,我有三张桌子 1.设备(id、deviceno、devicename) 2.程序(id、程序名) 3.可编程设备(id、programid、deviceid) 现在我两者都需要 1.与给定程序ID有关系的所有设备 2.与给定程序ID没有关系的所有设备 我尝试了以下方法 SELECT d.id, d.deviceno, d.devicename FROM devices d LEFT JOIN programdevices pd ON pd.program = 3 and pd.device =
1.设备(id、deviceno、devicename)
2.程序(id、程序名)
3.可编程设备(id、programid、deviceid)
现在我两者都需要
1.与给定程序ID有关系的所有设备
2.与给定程序ID没有关系的所有设备 我尝试了以下方法
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
但我总是得到一个空的结果。
感谢大家为我指出了正确的方向试试这个:
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
通过使用此选项,您将获得具有列
关系的所有设备。如果关系字段为YES
,则您有关系;如果NO
则您没有关系 你可以试试这个。我想它可能会帮助你
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
如果您想要所有设备,为什么不从设备d中选择d.id、d.deviceno、d.devicename?您是否希望从该查询中获得其他信息?/
真的在where子句中吗?不仅仅是全部。首先,我想显示与给定程序有关系的所有设备。然后,当用户单击“添加未使用的设备”时,我想显示当前与当前程序没有关系的所有设备。/实际上不在where子句中。它代表第一个或第二个case在这种情况下,作为两个单独的查询不是更好吗?当然,我在单独的select查询中这样做。但是,为什么两个select查询都提供一个空结果呢?