Requête SQL SERVER

Résolu
bouchra19 Messages postés 176 Statut Membre -  
bouchra19 Messages postés 176 Statut Membre -
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?

4 réponses

  1. l.dellacherie Messages postés 15 Statut Membre 2
     
    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
  2. Stringman621 Messages postés 1726 Date d'inscription   Statut Membre Dernière intervention   340
     
    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
  3. bouchra19 Messages postés 176 Statut Membre 20
     
    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
  4. bouchra19 Messages postés 176 Statut Membre 20
     
    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