0
votes

Compter des enregistrements de deux tables

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;


0 commentaires

3 Réponses :


0
votes

J'aime les jointures latérales pour cela: xxx pré>

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;


0 commentaires

1
votes

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


0 commentaires

0
votes

Je recommande de se joindre à deux sous-requêtes, chacune d'entre elles qui s'agrandit soit du dans ou out colonnes: xxx

Entrez l'image description ici

Démo


0 commentaires