Requête SQL SERVER

Résolu/Fermé
bouchra19 Messages postés 161 Date d'inscription jeudi 18 décembre 2008 Statut Membre Dernière intervention 13 décembre 2013 - 13 déc. 2011 à 14:25
bouchra19 Messages postés 161 Date d'inscription jeudi 18 décembre 2008 Statut Membre Dernière intervention 13 décembre 2013 - 14 déc. 2011 à 12:45
Bonjour,

Je travaille sur un TD de sql (cas d'un camping) qui se trouve à cette adresse: http://perso.modulonet.fr/~placurie/...%20complet.pdf

Je veux afficher le nom et prénom du client qui a le plus de réservations
J'ai réussi à afficher seulement le nombre de réservations max sans le nom et le prénom avec cette requête:
SELECT max(nb) AS mx
FROM (SELECT R.CLI_ID, count(*) AS nb
FROM CLIENT C, RESERVATION R
WHERE C.CLI_ID=R.CLI_ID
GROUP BY R.CLI_ID) AS T;


comment je peux afficher aussi le nom et le prénom svp?

A voir également:

4 réponses

l.dellacherie Messages postés 15 Date d'inscription mercredi 14 décembre 2011 Statut Membre Dernière intervention 3 janvier 2012 2
14 déc. 2011 à 10:48
Je vois pas l'interet de la sous-requete, on aurait pu travailler avec :
select top 1 count(R.Cli_Id) as Mx, cli_nom, cli_pnom
from client, reservation
group by ....
order by Mx



bat,
Laurent
1
Stringman621 Messages postés 1305 Date d'inscription mardi 13 décembre 2005 Statut Membre Dernière intervention 1 septembre 2012 337
13 déc. 2011 à 16:36
Bonjour,

Je suis un peu rouillé en SQL mais je vais tenter de t'aider : il suffirait de :
- rajouter dans ta sous-requete le nom et le prénom du client (après le select et après le group by)
- rajouter ces mêmes champs dans ta requete principale en ajoutant un GROUP BY nom, prénom à la fin de la requete principale, ca donnerait :

SELECT max(nb) AS mx, nom, prenom
FROM (SELECT R.CLI_ID, count(*) AS nb, nom, prenom
FROM CLIENT C, RESERVATION R
WHERE C.CLI_ID=R.CLI_ID
GROUP BY R.CLI_ID, nom, prenom) AS T
GROUP BY nom, prenom;


0
bouchra19 Messages postés 161 Date d'inscription jeudi 18 décembre 2008 Statut Membre Dernière intervention 13 décembre 2013 20
13 déc. 2011 à 19:14
Merci pour ta réponse Stringman621

J'ai essayé cette requête:

SELECT max(nb) AS mx, cli_nom, cli_pnom
FROM (SELECT R.CLI_ID, count(*) AS nb, cli_nom, cli_pnom
FROM CLIENT C, RESERVATION R
WHERE C.CLI_ID=R.CLI_ID
GROUP BY R.CLI_ID, cli_nom, cli_pnom) AS T
GROUP BY cli_nom, cli_pnom;


mais cela m'a donné comme le résultat du count: on m'a affiché le nombre de réservations de chaque client
0
bouchra19 Messages postés 161 Date d'inscription jeudi 18 décembre 2008 Statut Membre Dernière intervention 13 décembre 2013 20
14 déc. 2011 à 12:45
Merci beaucoup Laurent pour ta réponse

J'ai fait la requête suivante et ça a marché très bien:

select top 1 count(R.Cli_Id) as Mx, cli_nom, cli_pnom
from client C, reservation R
WHERE C.CLI_ID=R.CLI_ID
group by R.Cli_Id, cli_nom, cli_pnom
order by Mx desc;
0