2010-08-05 5 views
0

Comment puis-je utiliser la valeur d'une clause externe dans une clause interne en utilisant des instructions SELECT imbriquées? Par exemple:Comment utiliser le nom de colonne d'une clause externe dans une clause interne?

SELECT cost AS c, quantity, (SELECT COUNT(1) FROM accounts WHERE cost = c) 
FROM accounts 

Peut c être référencé dans la clause SELECT interne comme tentative ci-dessus?

+0

Cela fonctionne bien dans MySQL. Qu'est-ce que vous utilisez? –

Répondre

2

Alias ​​la table externe (par exemple FROM accounts AS a). Ensuite, vous pouvez simplement faire a.cost dans la sous-requête interne.

EDIT. Cela étant dit, il existe une meilleure façon d'écrire cette requête sans une sous-requête pour chaque ligne:

SELECT a.cost, a.quantity, COUNT(b.id) AS count 
FROM accounts AS a LEFT JOIN accounts AS b ON b.cost = a.cost 
+0

Comment la clause interne sait-elle si c'est la version externe ou interne des comptes? – CJ7

+0

ah, désolé, devrait alias la table externe comme quelque chose d'autre et utiliser l'alias. je vais éditer la réponse –

+0

Quel SQL utilisez-vous? Je ne peux pas sembler alias des tableaux comme ça. Je ne peux que faire: comptes a – CJ7

Questions connexes