PostgreSQLで左結合を使用しているすべての組織のカウントを返すために、以下を取得しようとしていますが、なぜそれが機能しないのか理解できません。
select o.name as organisation_name,
coalesce(COUNT(exam_items.id)) as total_used
from organisations o
left join exam_items e on o.id = e.organisation_id
where e.item_template_id = #{sanitize(item_template_id)}
and e.used = true
group by o.name
order by o.name
使用coalesce
がうまくいかないようです。私は私のウィットエンドにいます!どんな助けでも確かにありがたいです!
何が機能していないかを明確にするために、現時点では、クエリはカウントが0より大きい組織の値のみを返します。カウントに関係なく、すべての組織の行を返すようにします。
テーブル定義:
TABLE exam_items
id serial NOT NULL
exam_id integer
item_version_id integer
used boolean DEFAULT false
question_identifier character varying(255)
organisation_id integer
created_at timestamp without time zone NOT NULL
updated_at timestamp without time zone NOT NULL
item_template_id integer
stem_id integer
CONSTRAINT exam_items_pkey PRIMARY KEY (id)
TABLE organisations
id serial NOT NULL
slug character varying(255)
name character varying(255)
code character varying(255)
address text
organisation_type integer
created_at timestamp without time zone NOT NULL
updated_at timestamp without time zone NOT NULL
super boolean DEFAULT false
CONSTRAINT organisations_pkey PRIMARY KEY (id)