2010-09-16 4 views
0

J'ai 3 tables:plusieurs à plusieurs requêtes avec un compte de l'état> 0

  • e-mails
  • Foo
  • EmailFoos (Les nombreux à beaucoup d'autres rejoignent la table)

Foo peut être complet ou non.

Je dois trouver l'ensemble des e-mails où le nombre de terminé foos> 0 (et l'inverse, mais je peux probablement le faire;)

J'ai essayé quelque chose comme:

SELECT e.id, e.address, count(l.foo_id) as foo_count 
FROM emails e 
LEFT JOIN (
    SELECT l.foo_id, l.email_id 
    FROM foo_emails l 
    JOIN foos f ON (l.foo_id = f.id AND f.status = 'complete')) l ON 
(l.email_id = e.id) 
GROUP BY e.id 
HAVING foo_count > 0; 

Mais ça ne cesse de me dire que foo_count n'existe pas. Mon SQL_FU est faible. Postgress est le SGBD. Toute aide est très appréciée.

Répondre

4

Je suis sûr que vous avez juste besoin de remplacer le foo_count dans le having avec count (l.foo_id).

+0

Merci beaucoup! Cela semble fonctionner très bien. – user3606139