Requete trop compliquée

Voilà, j’ai ça :

Table Client:
-clientID
-name

Table Compte:
-compteID
-categorie
-clientID
-Solde
-CodeDevise

Table Devise:
-CodeDevise
-Date
-Taux

But de la requete:
Trouver la liste des noms de clients qui ont un solde total de tous leurs comptes >100.000€ dans la categorie “FIDU” à la date du jour et qui habitent à “Paris”.

Je bloque deja sur l’histoire de la somme des comptes :frowning:
Please help :smiley:

Je dirais ça :

SELECT CL.clientID, CL.name
FROM Client CL
WHERE CL.clientID IN(
  SELECT CO.clientID
  FROM Compte CO
  WHERE CO.clientID = CL.clientID AND SUM(CO.Solde) > 100000
  GROUP BY CO.clientID
)

Surtout, amuse toi bien pour ajouter la contrainte sur les types de comptes :smiley:

j’en suis a là pour l’instant :

 SELECT     Client.name

FROM Client
INNER JOIN Compte on Client.clientId = Compte.clientID
INNER JOIN Devise on Compte.codedevise = Devise.codedevise
GROUP BY Client.name
HAVING SUM(Compte.solde) >100000

mais il me reste encore la date du jour a gerer et le taux de change.

Pour la somme, le secret c’est un “having sum”…
mais on peut aussi le faire avec une requ^te imbriquée (par contre sum dans le where c’est interdit, il faut le mettre en colonne, et tester les résultat de la colonne)

Il manque une table pour sélectionner uniquement ceux de Paris

SELECT CL.clientID, CL.name
FROM Client CL
inner join  Compte CO
on CO.clientID = CL.clientID 
WHERE 
 CO.CodeDevise = 'EUR' AND 
CO.categorie ="FIDU'
  GROUP BY CO.clientID having SUM(CO.Solde) > 100000
)

edit: je n’avais pas vu, mais tu n’en es pas loin apparamment, la jointure sur la devise n’est pas utile par contre, psuiqu’on sélectionne directementsur l’id.
Edité le 22/08/2007 à 20:31

SELECT Client.name
FROM Client
INNER JOIN Compte on Client.clientId = Compte.clientID
INNER JOIN Devise on Compte.codedevise = Devise.codedevise
GROUP BY Client.name, Devise.date, Client.ville, Compte.categorie
HAVING SUM(Compte.solde * Devise.taux) > 100000
AND Devise.date = CONVERT(CHAR(10),GETDATE(),110)
AND Client.ville = ‘Geneve’
AND Compte.categorie = ‘fidu’

voilà j’y suis, je vais regarder pour cette histoire de jointure mais en tout cas ça a l’air de marcher.

merci

Au départ, j’avais mis un HAVING.