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 :

Requête avec jonction


Sujet :

Langage SQL

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2006
    Messages
    314
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 314
    Points : 98
    Points
    98
    Par défaut Requête avec jonction
    Bonjour,

    Je bute sur une requête avec jonction. Ça dois être tout simple mais je ne m'en sors pas.

    Pour faire simple 5 tables :
    CAT_PRODUIT
    CAT_CLASSEMENT
    CAT_OPTIONS
    CAT_PRODCATEGORIE
    CAT_PRODOPTION

    CAT_PRODUIT :
    CAT_ID / CAT_IDLABO / CAT_TITRE ......

    CAT_CLASSEMENT :
    CAT_CLASS_ID / CAT_CLASS_TYPE / CAT_CLASS_ID1 / CAT_CLASS_ID2

    CAT_OPTIONS
    CAT_OPT_ID / CAT_OPT_TYPE / CAT_OPT_LIBELLE / CAT_OPT_CATID / CAT_OPT_URL

    CAT_PRODCATEGORIE
    CATPRODID / ...

    CAT_PRODOPTION
    CAT_PRODOPTION_IDOPT / CAT_PRODOPTION_PROID

    Ma requête sans option qui fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT a.cat_id, a.cat_titre, a.cat_description, a.cat_img, a.cat_prix, a.cat_fdp, a.cat_fdt, b.nom, b.imagedvp, b.prodgratuitedetail 
    FROM `cat_produit` as a, dvp_marchands as b, CAT_PRODCATEGORIE as c , CAT_CLASSEMENT as d 
    WHERE c.catprodid = 1 AND c.catprodid = d.CAT_CLASS_ID2 AND d.CAT_CLASS_ID1 = a.cat_id AND d.CAT_CLASS_TYPE = 'parent' AND b.idm = a.cat_idlabo order by a.cat_prix asc
    Je veux ajouter le filtre option, les options sont enregistrées dans la table CAT_OPTIONS, un produit de la table CAT_PRODUIT est lié à l'option par le biais de son id de produit (CAT_ID) et de l'id de l'option (CAT_OPT_ID) dans la table CAT_PRODOPTION

    l'option que je cherche dans mon exemple ci dessous à ajouter est "violet"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT a.cat_id, a.cat_titre, a.cat_description, a.cat_img, a.cat_prix, a.cat_fdp, a.cat_fdt, b.nom, b.imagedvp, b.prodgratuitedetail 
    FROM `cat_produit` as a, dvp_marchands as b, CAT_PRODCATEGORIE as c , CAT_CLASSEMENT as d, CAT_OPTIONS as e inner join CAT_PRODOPTION as f on f.CAT_PRODOPTION_PROID = a.cat_id 
    WHERE c.catprodid = 1 AND c.catprodid = d.CAT_CLASS_ID2 AND d.CAT_CLASS_ID1 = a.cat_id AND d.CAT_CLASS_TYPE = 'parent' AND b.idm = a.cat_idlabo AND e.CAT_OPT_URL = 'violet' order by a.cat_prix asc
    ça bug sur :
    cat_id
    Unknown column 'a.cat_id' in 'on clause'{"success":false,"error":"
    et je ne suis pas sur que ça fonctionne !!!
    si vous avez une idée ???
    La vie à le gout qu'on lui donne

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2011
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 51
    Points : 34
    Points
    34
    Par défaut
    La jointure n'a pas l'air bonne....

    Citation Envoyé par mims1664 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     CAT_OPTIONS as e inner join CAT_PRODOPTION as f on f.CAT_PRODOPTION_PROID = a.cat_id

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Février 2006
    Messages
    314
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 314
    Points : 98
    Points
    98
    Par défaut
    Heuu je vois pas ?
    La vie à le gout qu'on lui donne

  4. #4
    Membre éclairé Avatar de Arkhena
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 552
    Points : 769
    Points
    769
    Par défaut
    On en lève les mouffles et on met les lunettes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     CAT_OPTIONS AS e INNER JOIN CAT_PRODOPTION AS f ON f.CAT_PRODOPTION_PROID = a.cat_id
    A bove ante, ab asino retro, a stulto undique caveto

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Février 2006
    Messages
    314
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 314
    Points : 98
    Points
    98
    Par défaut
    CAT_ID appartient à la table CAT_PRODUIT c'est donc bien a.cat_id ... ?

    et j'ai bien mis mes lunettes ...
    La vie à le gout qu'on lui donne

  6. #6
    Membre émérite Avatar de lola06
    Femme Profil pro
    Consultante en Business Intelligence
    Inscrit en
    Avril 2007
    Messages
    1 316
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    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 316
    Points : 2 520
    Points
    2 520
    Par défaut
    Là tu fais la jointure entre e et f donc si tu mets a.cat_id au milieu il va pas comprendre.

    Tu devrais faire toutes les jointures avec JOIN au lieu de les mettre dans le WHERE et là il n'y aurai plus de soucis... Et ça suivrais la syntaxe normalisée.
    ~ Lola ~

  7. #7
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 947
    Points : 5 846
    Points
    5 846
    Par défaut
    Ne pas mélanger la syntaxe ANSI avec celle des virgules.
    Et en formatant la requête et en utilisant la syntaxe ANSI on voit tout de suite qu'il manque une condition de jointure
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SELECT a.cat_id, a.cat_titre, a.cat_description, a.cat_img, a.cat_prix, a.cat_fdp, a.cat_fdt, b.nom, b.imagedvp, b.prodgratuitedetail 
      FROM cat_produit AS a
      join dvp_marchands AS b on b.idm = a.cat_idlabo   
      join CAT_CLASSEMENT AS d on d.CAT_CLASS_ID1 = a.cat_id  
      join CAT_PRODCATEGORIE AS c on c.catprodid = d.CAT_CLASS_ID2
      JOIN CAT_PRODOPTION AS f ON f.CAT_PRODOPTION_PROID = a.cat_id 
      join CAT_OPTIONS AS e ON e.CAT_OPT_ID = f.CAT_PRODOPTION_IDOPT
     WHERE c.catprodid = 1   
       AND d.CAT_CLASS_TYPE = 'parent'   
       AND e.CAT_OPT_URL = 'violet' 
     ORDER BY a.cat_prix ASC

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Février 2006
    Messages
    314
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 314
    Points : 98
    Points
    98
    Par défaut
    Ha ouais kuatamad je m'y prennais comme un pied !! tout à l'envers !

    Merci pour le tuyaux. je m'appuyais sur une requette existante sans me poser suffisamment de question sur l'évolution de celle ci ...

    Encore merci
    La vie à le gout qu'on lui donne

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

Discussions similaires

  1. Problème requête avec UNION et ORDER BY
    Par Yann21 dans le forum Langage SQL
    Réponses: 12
    Dernier message: 12/12/2003, 11h02
  2. Requète avec NOT EXISTS
    Par missllyss dans le forum SQL
    Réponses: 2
    Dernier message: 23/09/2003, 15h20
  3. Requête avec l'expression Like
    Par Mvu dans le forum ASP
    Réponses: 3
    Dernier message: 02/09/2003, 09h39
  4. problème de requête avec jointures
    Par tinhat dans le forum Requêtes
    Réponses: 7
    Dernier message: 11/08/2003, 10h33
  5. Problème dans requête avec count()
    Par BadFox dans le forum Requêtes
    Réponses: 3
    Dernier message: 08/07/2003, 18h02

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