Mephisto Posté(e) le 21 avril 2010 Partager Posté(e) le 21 avril 2010 Bonjour dans une base Postgres, je cherche à sélectionner l'id et l'adresse IP de mes controlleurs, ansi que le nombre d'entrées leur correspondant dans la table des logs. j'utilise donc la commande suivante : toto=> SELECT c.ctrl_id, c.host, COUNT(l.msgid) FROM controllers c, hid_log l WHERE l.ctrl_id = c.ctrl_id GROUP BY c.ctrl_id, c.host ORDER BY c.ctrl_id; ctrl_id | host | count ---------+------+------- (0 rows) la seconde table est vide, et dans ce cas, je veux pouvoir demander ses logs au controlleur... sauf que si aucun controlleur n'est retourné... ça m'aide pas... pour vérifier, je lance la même commande, mais en cherchant à compter le nombre de 'portes' (longue histoire, je rentre pas trop dans les détails, c'est juste histoire de compter dans une table qui a été complété) qui lui sont associés toto=> SELECT c.ctrl_id, c.host, COUNT(l.door_id) FROM controllers c, doors l WHERE l.ctrl_id = c.ctrl_id GROUP BY c.ctrl_id, c.host ORDER BY c.ctrl_id; ctrl_id | host | count ---------+--------------+------- 1 | 192.168.0.70 | 2 2 | 192.168.0.71 | 1 (2 rows) (sachant qu'il me reste encore un controlleur, auquel je n'ai pas assigné de portes, et qui est donc absent de la réponse) ma question est donc la suivante: y a-t-il une astuce pour les COUNT() renvoyant 0 sur les select multi-tables ? y aurait-il une autre solution ? Merci ! Lien vers le commentaire Partager sur d’autres sites More sharing options...
Mephisto Posté(e) le 21 avril 2010 Auteur Partager Posté(e) le 21 avril 2010 ok posté trop vite la solution: SELECT ctrl_id, host, (SELECT COUNT(msgid) FROM hid_log l WHERE l.ctrl_id = c.ctrl_id) FROM controllers c; Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.