3 votes

Requête PostgreSQL

J'utilise une installation postgresql et j'ai une table comme celle-ci :

sec_id     prod_id
1          789
1          908
1          678
13         789
13         123
13         908
15         789

Ce que je veux, c'est pouvoir déterminer le chevauchement (numéros de produits communs) dans les numéros de sécurité. En d'autres termes, je veux être en mesure d'obtenir un résultat similaire à celui-ci :

sec_id1    sec_id2    overlap
1          13         2       
1          15         1       
13         1          2       
13         15         1
15         1          1
15         13         1     

Je n'ai pas beaucoup d'expérience dans ce domaine et j'apprécierais toute aide.

2voto

Kevin Points 23308

Je suis habitué à MySQL, il se peut donc que vous deviez ajuster légèrement la syntaxe pour postgres :

SELECT a.sec_id AS sec_id1, b.sec_id AS sec_id2, COUNT(*) AS overlap
FROM tblname AS a JOIN tblname AS b 
WHERE a.prod_id = b.prod_id AND a.sec_id != b.sec_id 
GROUP BY a.sec_id, b.sec_id

Probablement, cela fonctionnerait dans PostgreSQL (ainsi que dans MySQL) :

SELECT a.sec_id AS sec_id1, b.sec_id AS sec_id2, COUNT(*) AS overlap
FROM tblname AS a JOIN tblname AS b ON a.prod_id = b.prod_id 
WHERE a.sec_id != b.sec_id 
GROUP BY a.sec_id, b.sec_id

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X