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 :

SQL Requête imbriquée


Sujet :

Langage SQL

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 39
    Points : 19
    Points
    19
    Par défaut SQL Requête imbriquée
    Bonjour,

    Je dispose de trois tables :
    1- table client
    2- table payement
    3- table selection

    Je souhaite extraire les données suivantes (condition where) :
    numero client, nom client, adresse client, somme achat, nombre achat

    Voici la requête développée

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    select c.numero, c.nom, c.adresse, c.somme, (select count(*) from table payement p, table selection s where p.numero = s.numero and type_payement = 2) as NBACHATS
    from t_payement p
    join t_selection s on p.numero = s.numero
    join t_client c on s.numero = c.numero
    where type_payement = 3
    order by somme desc;


    Le résultat de la requête ne répond au besoin. En effet le nombre d'achats retourné est identique pour tous les clients. Il s'agit de la somme pour tous les clients. Le résultat attendu est le nombre achats uniquement pour le client de la ligne.

    Une âme charitable pourrait-elle me donner une piste ?

    D'avance, merci.

    vr_brandon

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    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 080
    Points : 30 802
    Points
    30 802
    Par défaut
    Serait-ce cela que tu veux faire ?
    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
    SELECT  c.numero
        ,   c.nom
        ,   c.adresse
        ,   c.somme
        ,   cnt.nbachats
    FROM    t_payement p
        JOIN 
            t_selection s 
            ON p.numero = s.numero
        JOIN
            t_client c 
            ON s.numero = c.numero
        JOIN
            (   SELECT  s2.numero
                    ,   COUNT(*)   AS nbachats
                FROM    payement p2
                    JOIN
                        selection s2 
                        ON  p2.numero = s2.numero
                WHERE   type_payement = 2
                GROUP BY s2.numero
            )   cnt
            ON s.numero = cnt.numero
    WHERE   type_payement = 3
    ORDER BY c.somme 
    DESC;
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 39
    Points : 19
    Points
    19
    Par défaut Merci
    Merci pour votre aide.
    C'est exactement ce que je souhaitais mettre en place.
    L'astuce résidait dans l'utilisation d'un select imbriqué en renommant les tables c2 et s2.

    vr_brandon

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 04/07/2008, 17h03
  2. [SQL] Requêtes imbriquées
    Par Asdorve dans le forum Langage SQL
    Réponses: 8
    Dernier message: 27/07/2007, 11h42
  3. [MySQL] Erreur SQL 1064 : Requête imbriquée avec jointure !
    Par patchankito dans le forum Langage SQL
    Réponses: 5
    Dernier message: 31/01/2006, 10h37
  4. [D2005 - Access-Sql] Comment imbriquer 4 tbles en 1 requête?
    Par Hauwke dans le forum Bases de données
    Réponses: 2
    Dernier message: 07/11/2005, 09h44
  5. [PL/SQL]requête imbriquée
    Par Nadine dans le forum Oracle
    Réponses: 6
    Dernier message: 01/02/2005, 16h21

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