2010-10-15 9 views
0

Supposons que j'ai deux tables Table1 et Table2 avec les données suivantes.Requête pour obtenir TOUTES les correspondances pour une colonne particulière

Column1 Column2 Column3 
AAA  KKK  9 
BBB  LLL  7 
CCC  MMM  9 
DDD  MMM  5 
EEE  MMM  7 
FFF  NNN  9 
GGG  OOO  1 


Column4 Column1 
TTT  DDD 
TTT  BBB 
UUU  EEE 
VVV  BBB 
WWW  AAA 
WWW  BBB 
XXX  DDD 
YYY  EEE 
YYY  DDD 
YYY  CCC 
YYY  FFF 

La requête est de sélectionner « valeur de sélection (s) à partir de column4 qui correspond au résultat de nuplet de column1 lorsque column2 a la valeur 'MMM' ('CCC', 'DDD', 'EEE') ce résultat devrait correspondre à tous les résultats de column4" le résultat est 'YYY'

le message d'erreur est

SELECT DISTINCT t2.Column4 
    FROM Table1 t1 
LEFT JOIN Table2 t2 ON t1.Column1 = t2.Column1 
    WHERE Column2 = 'MMM' 
GROUP BY t1.Column2 
    HAVING COUNT(t1.Column1) = COUNT(t2.Column1) 
     * 
    ERROR at line 1: 
ORA-00904: "T1"."Column1": invalid identifier 
+0

On dirait que vous avez une faute de frappe à la rangée 5. Ce serait "EEE-MMM", pas "EEE-NNN" – zerkms

+5

Cela me fait mal à la tête ... –

+0

Ok! tu avais raison! C'était une faute de frappe et il aurait dû être "EEE-MMM" – Sana

Répondre

3
SELECT t2.Column4 
    FROM Table1 t1 
LEFT JOIN Table2 t2 ON t1.Column1 = t2.Column1 
    WHERE Column2 = 'MMM' 
GROUP BY t2.Column4 
    HAVING COUNT(t1.Column1) = COUNT(t2.Column4) 

Qu'en est cette requête?

+0

Je pense que t1.column1 n'est pas une expression GROUP BY – Sana

+0

Je l'ai changé plusieurs fois ;-) Il est un peu difficile de garder à l'esprit une telle exécution de requête ;-) – zerkms

+0

Il est dit que [HAVING COUNT (t1.Column1) = COUNT (t2.Column4)] n'est pas une expression GROUP BY – Sana

Questions connexes