0

私は投票者とユーザーの2つのテーブルを持っています。ユーザー情報の横に、割り当てられた有権者レコードの総数をすべてのユーザーに表示したいと考えています。

この時点で、このクエリの種類は機能します。任意の数のレコードが割り当てられているユーザーの合計が表示されますが、voter テーブルに割り当てられたレコードが 0 個のユーザーは表示されません。

投票者レコードは、voter.owner フィールドを持つユーザーに割り当てられます。これが私が現在持っているものです:

SELECT u.id
    ,u.admin
    ,u.active
    ,u.name
    ,u.email
    ,u.last
    ,if(count(v.owner) is NULL,'0',count( v.owner )) as assigned 
from user u 
left join voter v 
    on u.id = v.owner 
where u.cid = '$cid' 
order by u.id asc

有権者レコードを所有していないユーザーも含め、すべてのユーザーを表示する方法について何かアドバイスはありますか?

4

2 に答える 2

1
if(count(v.owner) is NULL,'0',count( v.owner )) as assigned

する必要があります...

SUM(if(v.owner is NULL,0,1) as assigned
于 2012-05-04T15:27:36.797 に答える
-2

Left-Join は、この問題に対する間違ったアプローチです。解決策は、次のようにサブ選択を使用することです。

SELECT `user.id`, `user.admin`, `user.active`, `user.name`, `user.email`, `user.last`,
    (SELECT COUNT(*) FROM voter WHERE `user.id` = voter.owner)
FROM `user` 
WHERE user.cid = '$cid'
ORDER BY `user.id` ASC
于 2012-05-04T14:45:53.827 に答える