sqlite左边连接三个表

时间:2014-12-22 07:48:06

标签: android sqlite

我有3张桌子

租户:_id,Firstname..etc

租约:_id,tenant_id(FK)。和其他人

TenantMeters:_id,tenant_id(FK)和其他字段。

我想构建一个在两种情况下返回记录的查询:

(1)两个表(租赁和租户表)中有租户记录

(2)Tenancy表或TenantMeters中有租户记录

有什么建议吗?

我试过了

 SELECT Tenants._id ,TenantMeters.Tenant_id, Tenancy.tenant_id from Tenancy  left join Tenants on Tenants._id=Tenancy.tenant_id  left join TenantMeters on  Tenants._id=TenantMeters .Tenant_id  where TenantMeters.Tenant_id=? Or Tenancy.tenant_id=?

但是如果我只有一个记录TenantMeters表,那就失败了。

1 个答案:

答案 0 :(得分:1)

您的示例查询是从Tenancy中选择的,因此如果该记录不存在,那么它就不会加入TenantMeters

如果TenancyTenantMeters中有租户,则会返回以下查询:

SELECT Tenants._id, TenantMeters.Tenant_id, Tenancy.tenant_id
FROM Tenants
LEFT JOIN TenantMeters ON TenantMeters.Tenant_id = Tenants._id
LEFT JOIN Tenancy ON Tenancy.Tenant_id = Tenants._id;