2010-10-11 8 views
0

Je vous écris une requête SQL et obtenir une erreur:requête sql

Invalid use of group function 

Qu'est-ce que cela signifie? Dans ma requête, clause where est donnée ci-dessous:

select c.name,s.contact,s.number 
from list c , senior s 
where c.id = s.id AND c.name = 'Abg' AND c.state ='qw' AND MIN(c.dob); 

Fondamentalement, j'ai 2 fichiers et je dois trouver le client plus jeune de fichier 2e et ensuite récupérer ses données depuis le premier fichier. J'ai le numéro d'identification des clients dans le 2ème fichier. Je vérifie d'abord les identifiants avec l'identifiant du premier fichier. Et vérifiez son état et son nom. Et puis j'ai besoin de trouver plus jeune parmi ces clients. C'est pourquoi j'ai besoin de la fonction MIn.

+0

peut-être il est utile que vous postez toute requête – Tyzak

+0

Convenu (?). L'erreur se produit probablement juste avant la clause WHERE .. peut-être une table nommée groupe ou quelque chose? –

+0

Pourriez-vous fournir la requête complète? Je m'attends à trouver quelque part une clause 'GROUP BY', provoquant le lancement de cette erreur. – thomaux

Répondre

0

Vous devez utiliser une sous-requête:

select c.name,s.contact,s.number 
from from list c, senior s 
inner join 
(
    select MIN(c.dob) minDob 
      ,c.id 
    from list c 
    where c.id = s.id AND c.name = 'Abg' AND c.state ='qw' 
    group by c.id 
) sq 
on c.dob = sq.minDob 
    and c.id = sq.id 
0

AND MIN(c.dob); provoque l'erreur.

Je pense que vous devriez utiliser quelque chose comme:

c.dob = (select MIN(dob) from c); 
+0

"Et puis j'ai besoin de trouver plus jeune parmi ces clients." implique l'endroit où les contraintes doivent être utilisées pour trouver la valeur minimale de dob. – Goran