Jump to content

Archived

This topic is now archived and is closed to further replies.

Mephisto

[Résolu] PostgreSQL select sur plusieurs tables

Recommended Posts

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 !

Share this post


Link to post
Share on other sites

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;

Share this post


Link to post
Share on other sites

×
×
  • Create New...