IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement SQL Server Discussion :

Requête SQL-Server


Sujet :

Développement SQL Server

  1. #1
    Membre régulier Avatar de bouchra19
    Femme Profil pro
    Développeur multimédia
    Inscrit en
    Juin 2011
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Développeur multimédia
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 104
    Points : 76
    Points
    76
    Par défaut Requête SQL-Server
    Bonjour tout le monde

    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:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    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?
    Il n'est jamais trop tard pour apprendre

  2. #2
    Membre expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Points : 3 173
    Points
    3 173
    Par défaut
    Et si plusieurs client ont le même nombre de réservation?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    ;WITH CTEclient (CLI_ID ,NB)
    AS
    (
        SELECT R.CLI_ID, count(*) AS NB
    FROM CLIENT C 
       INNER JOIN RESERVATION R
          ON C.CLI_ID=R.CLI_ID
    GROUP BY R.CLI_ID
    )
    OU:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    ;WITH CTEclient (CLI_ID ,NB)
    AS
    (
        SELECT R.CLI_ID, count(*) AS NB
    FROM CLIENT C 
       INNER JOIN RESERVATION R
          ON C.CLI_ID=R.CLI_ID
    GROUP BY R.CLI_ID
    )
    SELECT TOP 1 C.nom,C.prenom
    FROM client C 
       INNER JOIN CTEclient CT
          ON CT.CLI_ID=C.CLI_ID
    ORDER BY CT.NB DESC
    Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
    MCTS Database Development
    MCTS Database Administration

  3. #3
    Expert éminent sénior
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Points : 12 891
    Points
    12 891
    Par défaut
    Je pense que l'option WITH TIES ne sera pas superflue dans ce cas surtout si 2 clients ont le même nombre total de réservations

    ++

  4. #4
    Membre régulier Avatar de bouchra19
    Femme Profil pro
    Développeur multimédia
    Inscrit en
    Juin 2011
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Développeur multimédia
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 104
    Points : 76
    Points
    76
    Par défaut
    Merci pour votre aide

    j'ai pas compris à quoi sert "with" et "inner join" (parce que je suis débutante )

    mais j'ai essayé une autre requête plus simple et ça a marché impeccablement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    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;
    Il n'est jamais trop tard pour apprendre

  5. #5
    Expert éminent sénior
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Points : 12 891
    Points
    12 891
    Par défaut
    WITH TIES vous permet de remonter les lignes ayant un résultat équivalent pour le nombre de réservations.

    Imaginez que 2 personnes arrivent en tête. Dans ce cas il faut bien remonter toutes les 2 parce qu'elles sont ex æquo.

    ++

  6. #6
    Membre régulier Avatar de bouchra19
    Femme Profil pro
    Développeur multimédia
    Inscrit en
    Juin 2011
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Développeur multimédia
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 104
    Points : 76
    Points
    76
    Par défaut
    ah ok merci pour cette info

    mais je pense pas que ça a le même effet que le ";with ...As ..." que Iberserk a mentionné

    j'ai cherché sur internet mais j'ai rien trouvé

    svp qui a un lien de cours à ce propos ?
    Il n'est jamais trop tard pour apprendre

  7. #7
    Modérateur
    Avatar de Chtulus
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2008
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2008
    Messages : 3 094
    Points : 8 678
    Points
    8 678
    Par défaut
    Bonjour,

    De la lecture (Fouillez un peu !) :

    - Les jointures
    - CTE

    « Je ne cherche pas à connaître les réponses, je cherche à comprendre les questions. »
    - Confucius -

    Les meilleurs cours, tutoriels et Docs sur les SGBD et le SQL
    Tous les cours Office
    Solutions d'Entreprise



Discussions similaires

  1. Fermeture des requêtes SQL Server
    Par zwina2004 dans le forum Bases de données
    Réponses: 5
    Dernier message: 26/10/2007, 16h17
  2. [Requête] SQL SERVER 2000 / Transact SQL
    Par plutonium719 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 11/09/2007, 17h56
  3. Aidez moi pour une requête SQL server
    Par pop10 dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 19/06/2007, 22h15
  4. Réponses: 2
    Dernier message: 04/04/2006, 11h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo