我有2张桌子:
clients_db
| clnt_id | clnt_sid | usr_sid | clnt_name |
| 1 | 12345678 | 10001 | Peter |
| 2 | 87654321 | 10001 | Mikey |
aircon_client_db
| ac_id | clnt_sid |
| 1 | 12345678 |
| 2 | 12345678 |
| 3 | 12345678 |
| 4 | 87654321 |
| 5 | 87654321 |
这是查询:
select *,count(air.ac_id) as nAC
from clients_db clnt
left join aircon_client_db air on air.clnt_sid=clnt.clnt_sid
where clnt.usr_sid=?
group by clnt.clnt_sid
order by clnt.clnt_name asc
根据上面的代码。我期望结果为clnt_id[1]=3
和clnt_id[2]=2
。但是结果将全部返回0
。我应该在哪里修理?
答案 0 :(得分:1)
您只需要选择count(air.ac_id)
。
如果您期望得到类似clnt.usr_sid=?
的结果,也可以将clnt.clnt_id=?
替换为clnt_id[1]=3
。
select count(air.ac_id) as nAC
from clients_db clnt
left join aircon_client_db air on air.clnt_sid=clnt.clnt_sid
where clnt.clnt_id=?
group by clnt.clnt_sid
order by clnt.clnt_name asc
您是否在问题中缺少clnt_name
作为专栏?
答案 1 :(得分:0)
不要使用*
,而是使用显式的列名,在这种情况下,您也可以使用clnt.*
(您不需要左连接表的值,而只需要count(*)< / p>
select clnt.clnt_id, clnt.clnt_sid ,count(air.ac_id) as nAC
from clients_db clnt
left join aircon_client_db air on trim(air.clnt_sid)=trim(clnt.clnt_sid)
AND trim(clnt.user_sid)= '10001'
group by clnt.clnt_sid
order by clnt.clnt_name asc