J'ai deux tables dans TAB1 et TAB2, l'objectif est de compter toutes les occurrences dans TAB2 et de les afficher à côté de l'ID qui sont présents dans tab1;
Tab1 looks: p>
select k.id, count(t.in) from tab1 k left outer join tab2 t on t.in= k.id group by k.id;
3 Réponses :
J'aime les jointures latérales pour cela: ceci n'utilise pas onglet1 code>, il ne retourne donc pas 0 code> compte (dans les deux colonnes). Si vous avez besoin des deux: P> select t1.id, sum(v.ins) as ins, sum(v.outs) as outs
from tab1 t1 left join
(tab2 t2 left join lateral
(values (t2.in, 1, 0), (t2.out, 0, 1)) v(id, ins, outs)
)
on t1.id = v.id
group by t1.id;
Essayez cette requête
SELECT id, (SELECT COUNT(*) FROM tab2 t2 WHERE t2.in = t1.id) AS countIn, (SELECT COUNT(*) FROM tab2 t2 WHERE t2.out = t1.id) AS countOut FROM tab1 t1
Je recommande de se joindre à deux sous-requêtes, chacune d'entre elles qui s'agrandit soit du dans code> ou out code> colonnes: Démo H2>
p> p>