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

Langage SQL Discussion :

avoir le pays où il ya le plus grand nb de client


Sujet :

Langage SQL

  1. #1
    Futur Membre du Club
    Inscrit en
    Mai 2007
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 7
    Points : 5
    Points
    5
    Par défaut avoir le pays où il ya le plus grand nb de client
    bonjour,
    jai un problème avec le sql
    je veux avoir le pays où il ya le nb max des clients
    jai essayé:
    SELECT
    Resort.resort,
    sum(Invoice_Line.nb_guests)
    FROM
    Resort,
    Invoice_Line,
    Service_Line,
    Service
    WHERE
    ( Invoice_Line.service_id=Service.service_id )
    AND ( Resort.resort_id=Service_Line.resort_id )
    AND ( Service.sl_id=Service_Line.sl_id )
    AND ( Service_Line.service_line = 'Accommodation' )
    GROUP BY
    Resort.resort
    HAVING
    sum(Invoice_Line.nb_guests) >= (SELECT
    sum(Invoice_Line.nb_guests)
    FROM
    Invoice_Line,
    Service_Line,
    Service
    WHERE
    ( Invoice_Line.service_id=Service.service_id )
    AND ( Service.sl_id=Service_Line.sl_id )
    AND ( Service_Line.service_line = 'Accommodation' )
    group by
    Resort.resort
    )

    et ça ne marche pas
    il me dit aucune donnée à retourner
    merci d'avance pr laide

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 109
    Points : 28 437
    Points
    28 437
    Par défaut
    Il te manque un niveau de regroupement...
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    SELECT
            Resort.resort
        ,    SUM(Invoice_Line.nb_guests)
    FROM
            Invoice_Line
        INNER JOIN
            Service
            ON    ( Invoice_Line.service_id=Service.service_id )
        INNER JOIN
            Service_Line,
            ON    ( Service.sl_id=Service_Line.sl_id )
        INNER JOIN
            Resort
            ON    ( Resort.resort_id=Service_Line.resort_id )
    WHERE
            ( Service_Line.service_line = 'Accommodation' )
    GROUP BY
            Resort.resort
    HAVING
            SUM(Invoice_Line.nb_guests) >=
            (    SELECT    MAX(tot_guests.sum_guests)
                FROM
                    (    SELECT    Resort.resort
                            ,    SUM(Invoice_Line.nb_guests)    AS sum_guests
                        FROM
                                Invoice_Line
                            INNER JOIN
                                Service
                                ON    ( Invoice_Line.service_id=Service.service_id )
                            INNER JOIN
                                Service_Line
                                ON    ( Service.sl_id=Service_Line.sl_id )
                            INNER JOIN
                                Resort
                                ON    ( Resort.resort_id=Service_Line.resort_id )
                        WHERE
                                ( Service_Line.service_line = 'Accommodation' )
                        GROUP BY
                                Resort.resort
                    )    AS    tot_guests
            ) 
    ;
    L'utilisation de jointures normalisées (INNER JOIN) permet de séparer ce qui dépend de la jointure proprement dite du filtre sur les données et rend la requête plus lisible.
    L'utlisation des balises [CODE] et l'indentation du code SQL rendent le message plus agréable à lire... et augmentent l'envie d'y répondre.

  3. #3
    Futur Membre du Club
    Inscrit en
    Mai 2007
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 7
    Points : 5
    Points
    5
    Par défaut pays où il ya le max de clients
    merci
    mais ça ne marche tjs pas

  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 109
    Points : 28 437
    Points
    28 437
    Par défaut
    Dans un premier temps, il faut vérifier que la requête de base (ce qui est avant HAVING) revoie bien des données...
    Puis que le calcul de la valeur du critère (ce qui est après >=), renvoie bien une valeur.

  5. #5
    Futur Membre du Club
    Inscrit en
    Mai 2007
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 7
    Points : 5
    Points
    5
    Par défaut pays
    effectivement ce ki est après le having nenvoie rien
    il nya pas assez de parametres pr lui

Discussions similaires

  1. Réponses: 25
    Dernier message: 01/05/2020, 06h36
  2. Déterminer la Valeur la plus grande dans une table
    Par arnaud_verlaine dans le forum Langage SQL
    Réponses: 9
    Dernier message: 22/08/2014, 23h35
  3. Réponses: 0
    Dernier message: 18/02/2010, 10h23
  4. Console, avoir une police plus grande
    Par JavaAcro dans le forum SUSE
    Réponses: 7
    Dernier message: 23/11/2006, 18h14
  5. Réponses: 3
    Dernier message: 16/12/2002, 16h12

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