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 :

Galère pour une requête SQL


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 249
    Par défaut Galère pour une requête SQL
    Bonjour,

    Je galère pour effectuer une requête sur deux tables :

    J'ai une Table PRODUITS, avec le champs id
    Une table Prix, avec les champs id, id_produit, prix (valeur du prix)

    Je souhaite récupérer TOUS les produits, du moins cher au plus cher, sachant qu'un produit a plusieurs prix. J'ai dont effecté la requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT Produits.id,Produits.id_rubrique FROM Produits LEFT JOIN Prix ON Prix.id_produit=Produits.id ORDER BY Prix.Prix ASC
    Le problème, c'est qu'il me renvoi autant de fois le même produit qu'il y a de prix pour ce produit... par exemple, si un produit à 3 prix, il me renvoi trois fois le même produit.

    Que puis-je faire pour résoudre ce problème et ne sortir qu'une fois un même produit, associé à son prix minimum ?

    Merci.

  2. #2
    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 : 46
    Localisation : France, Rhône (Rhône Alpes)

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

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

    Ajoute
    « 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



  3. #3
    Membre Expert Avatar de lola06
    Femme Profil pro
    Consultante en Business Intelligence
    Inscrit en
    Avril 2007
    Messages
    1 315
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultante en Business Intelligence
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 315
    Par défaut
    Salut,

    Si je suis ce que tu as dit :
    - tu veux l'id_produit
    - tu veux le prix min

    --> tu n'as pas besoin de faire de jointure, tu as tout dans ta table prix (a moins que j'ai mal compris).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT P.id_produit , MIN(P.Prix) 
    FROM Prix
    GROUP BY P.id_produit
    ORDER BY P.Prix ASC
    A+

  4. #4
    Membre chevronné Avatar de elbj
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2004
    Messages
    371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Services à domicile

    Informations forums :
    Inscription : Novembre 2004
    Messages : 371
    Par défaut
    Bonjour
    tu n'as pas besoin de faire de jointure, tu as tout dans ta table prix (a moins que j'ai mal compris)
    En fait c'est lespalom qui n'est pas assez précis mais il me semble qu'il veut récupérer plus que l'Id des produits. Auquel cas la jointure est nécessaire.

    Cordialement

  5. #5
    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 : 46
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Avril 2008
    Messages : 3 094
    Par défaut
    Salut Elbj,
    Bonjour lola06 (Toujours un plaisir ),

    En effet :
    lespalom, ta requête que tu présente est-elle bien complète?
    « 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



  6. #6
    Membre Expert Avatar de lola06
    Femme Profil pro
    Consultante en Business Intelligence
    Inscrit en
    Avril 2007
    Messages
    1 315
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultante en Business Intelligence
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 315
    Par défaut
    Salut tout le monde....
    comme tu vois on a du mal a cerner ce que tu veux...
    Precise nous :
    * ce que tu souhaite avoir comme résultat
    -- Exemple de données :
    ID PRIX
    -- ----
    1 12
    1 23
    1 15
    2 10


    -- Le résultat attendu :
    (la c'est ce que j'ai compris)
    ID MIN(PRIX)
    -- ---------
    2 10
    1 12
    * ton SGBD

    A+

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 249
    Par défaut
    Oui c'est bien le résultat que je veux obtenir. Chtulus, j'ai enlevé une partie pour ne pas vous embrouiller, mais j'ai oublié d'enlever le Produits.id_Produits (j'avais mis un WHERE Produits.id_produit=@id_produit)

    Je me réexplique , plus complet. Voici mes tables :

    PRODUITS
    - id
    - id_rubrique

    PRIX
    - id
    - id_produit
    - prix (valeur du prix en décimal, ex : 1,5)

    Je souhaite donc récupérer tous les Produits d'une rubrique donnée (id_rubrique), et qu'ils soient classés en sortie selon leur prix minimum, du plus petit au plus grand. En gros, cela se décompose par :
    1. On sélectionne tous les produits 1 par 1
    2. Pour chaque produit, je recherche son prix mini dans la table PRIX
    3. Enfin, après avoir examiné tous les prix mini, je veux qu'en sortie de ma requête, il me renvoi TOUS les produits de la rubrique ID_Rubrique, classés selon leurs prix mini.

    Exemple :

    Table produits :

    ID ID_RUBRIQUE
    -- ----
    1 1
    2 2
    3 1
    4 1

    Table Prix :

    ID ID_Produit PRIX
    -- -------- ----
    1 1 10
    2 1 12
    3 1 8
    4 2 4
    5 1 16
    6 3 5
    7 4 1
    8 2 18
    9 4 16
    10 3 15

    -> Le résultat attendu en sortie :

    ID (de la table produit, pour la rubrique 1)
    4
    3
    1

    Voilà, j'espère que c'est un peu plus clair

    Merci.

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

Discussions similaires

  1. 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
  2. problème de syntaxe delphi pour une requête sql
    Par socooooool dans le forum Bases de données
    Réponses: 12
    Dernier message: 07/07/2006, 16h53
  3. Besoin d'aide pour une requête SQL
    Par Borami dans le forum Langage SQL
    Réponses: 1
    Dernier message: 07/11/2005, 10h33
  4. Réponses: 3
    Dernier message: 18/06/2005, 00h31
  5. Besoin d'aide pour une Requête SQL ...
    Par Kokito dans le forum Requêtes
    Réponses: 2
    Dernier message: 07/07/2004, 11h56

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