Requête SQL SERVER

Résolu
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. 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
    1. 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
      1. 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
        1. 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