Requête avec une JOINTURE GAUCHE de ne pas retourner des lignes pour compter de 0

J'essaie d'obtenir la suivante pour retourner un nombre pour chaque organisation à l'aide d'une jointure gauche dans PostgreSQL, mais je ne peux pas comprendre pourquoi ça ne fonctionne pas:

  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

À l'aide de coalesce ne semble pas fonctionner. Je suis à mon wit's end! Toute aide serait certainement apprécié!

De préciser ce qui ne marche pas, au moment où la requête ne retourne des valeurs pour les organisations qui ont un nombre supérieur à 0. Je voudrais qu'elle retourne une ligne pour chaque organisation, quel que soit le nombre de.

Définitions de Table:

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)
  • coalesce(COUNT(exam_items.id),0) as total_used ???
  • et bien oui, j'ai aussi essayé le COMTE(exam_items.id) comme total_used, mais je dois dire que sql n'est pas vraiment mon fort!
  • désolé je vois ce que tu veux dire! J'ai essayé, mais toujours pas de chance :/
  • Quand vous postez une question, merci de préciser ce que "ça ne marche pas" s'entend dans la question - retour rien, en retournant une valeur incorrecte, ce qui donne une erreur, etc.
  • merci, tout à fait logique! cependant, même en utilisant la ligne comme vous l'avez suggéré, à la requête de toujours retourner uniquement les valeurs pour les organisations avec un nombre supérieur à 0 - je me demande si cela n'a rien à faire et exam_items.utilisé = true
  • Pas d'importance, mais tout de même importantes: organisation_id integer REFERENCES organisations(id)

InformationsquelleAutor mulus | 2013-03-17