-1
votes

en utilisant max () et compter () avec ayant

J'ai 2 tables Film: XXX PRE>

DIR: P>

SELECT actor, COUNT(actor) as c 
FROM   movie a  
       inner join dir b 
       on a.moviename=b.moviename  
GROUP BY actor
HAVING COUNT(actor)=(
                       SELECT MAX(mycount) 
                       FROM   ( 
                                  SELECT actor, COUNT(actor) as mycount 
                                  FROM   movie a 
                                         inner join dir b 
                                          on a.moviename=b.moviename 
                                  GROUP BY actor
                               )
                     );


3 commentaires

Je vous aide simplement à reformater votre requête. Vous avez manqué l'alias pour la dernière sous-requête. Aussi votre requête peut être très simplifiée


Ohh yess merci! et pourquoi la dernière sous-requête nécessite-t-elle un alias


Je l'appellerais Table dérivé . Le moteur SQL Server attend un nom pour Table dérivée . Le doc docs.microsoft.com/en-us/sql/t-sql/queries/... a déclaré que lorsqu'une table dérivée, une fonction de jonction ou une fonction de valorisation de la table ou une clause d'opérateur (telle que pivot ou impublissement ) est utilisé, le ** requis ** table_alias .....


3 Réponses :


0
votes

Ajouter un nom d'alias: xxx


0 commentaires

0
votes

Essayez quelque chose comme ça

SELECT TOP (1) actor, COUNT(d.col1) as c 
FROM   movie a  
inner join dir b 
on a.moviename=b.moviename 
Group BY actor
ORDER BY c DESC


0 commentaires

0
votes

Démo sur DB <> Fiddle

Vous devez ajouter le nom d'alias Comme @ @ Squirrel ''s Commentaire.

Reportez-vous à ce message pour connaître la raison pour laquelle.

sous-requête D'après avoir dû avoir un alias

Cependant, votre requête est assez complexe inutilement.

Code de refacteur xxx

 Entrez la description de l'image ici


1 commentaires

@Adi fait cela répondre à votre question? S'il vous plaît donnez-moi vos commentaires, merci.