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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé 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
    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?

  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 : 43
    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
    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

  3. #3
    Expert confirmé
    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 : 46
    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
    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 confirmé 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
    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;

  5. #5
    Expert confirmé
    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 : 46
    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
    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 confirmé 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
    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 ?

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