2016-11-26 1 views
0

Je travaille avec une sélection dans deux tables différentes qui doivent être correspondre par identifiant de référence du groupe, comme: Tableau 1 et tableau 2:AYANT COUNT recevoir d'autres COUNT valeur

+-----+-----+------------+ +-----+------+ 
| gid | tid | created | | gid | nid | 
+-----+-----+------------+ +-----+------+ 
| 0 | 816 | 1480002041 | | 0 | 1123 | 
| 1 | 731 | 1480003932 | | 0 | 1124 | 
| 1 | 736 | 1480003932 | | 1 | 1125 | 
| 2 | 746 | 1480003932 | | 1 | 1126 | 
+-----+-----+------------+ | 1 | 1123 | 
          | 2 | 1124 | 
          | 1 | 1129 | 
          +-----+------+ 

Je dois obtenir nid valeurs de tableau 2 qui ont une correspondance exacte de groupe avec le groupe sur tableau 1. La référence de recherche dans tableau 1 est tid. Je crois que le SQL serait quelque chose comme ça:

SELECT t1.nid 
FROM table1 t1 
INNER JOIN 
(
    SELECT gid 
    FROM table2 
    WHERE tid IN (731, 736, 746, 751) 
    GROUP BY gid 
    HAVING COUNT(DISTINCT tid) = 4 
) t2 ON t1.gid = t2.gid; 

Mais comment puis-je obtenir le exactement count pour remplacer number 4 codé en dur?

Répondre

0
SELECT t2.nid 
    FROM table1 t1 
INNER JOIN 
    table2 t2 
    ON t1.gid = t2.gid; 
WHERE t2.tid IN (731, 736, 746, 751) 
    GROUP BY t2.gid 
+0

Merci Roman Che, mais ne fonctionne pas comme prévu. Les résultats ne doivent rien retourner quand les valeurs de 'tid' ne correspondent pas avec le nombre de' gid' sur la deuxième table – WillianLKeller

+0

hmm ... Je pense que les tables d'exemples ne conviennent pas à votre question ... –