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

Requêtes MySQL Discussion :

Requête sql left join


Sujet :

Requêtes MySQL

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

    Informations forums :
    Inscription : Février 2012
    Messages : 199
    Points : 71
    Points
    71
    Par défaut Requête sql left join
    Bonjour,

    Je suis pas très à l'aise avec Left Join dans les requêtes SQL, J'aimerai afficher plusieurs informations concernant des produits. Le problème c'est que tous les produits n'ont pas forcément des données qui sont présentes dans certaines tables. Dans mon cas la table ps_feature_product.

    Voici ma requête :

    Unknown column 'ps_feature_product.id_feature_value' in 'on clause'
    Code sql : 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
    SELECT DISTINCT ps_state.name AS nameSecteur, ps_product.state_id, ps_product.price, ps_product_lang.name, ps_product_lang.description, ps_product_lang.description_short,
              ps_supplier.name AS nameSupplier, ps_supplier.id_supplier AS idSup, ps_product.id_product
              FROM ps_product_lang
              JOIN ps_product ON ps_product_lang.id_product = ps_product.id_product
              JOIN ps_activiteproduct ON ps_product.id_product = ps_activiteproduct.id_product
              JOIN ps_activite ON ps_activiteproduct.id_activite = ps_activite.id_activite
              JOIN ps_state ON ps_product.state_id = ps_state.id_state
              JOIN ps_departement ON ps_state.id_state = ps_departement.state_id
              AND ps_product.state_id = 331
              AND ps_feature_product.id_feature_value = 16
              LEFT JOIN ps_feature_product ON ps_product.id_product = ps_feature_product.id_product
              LEFT JOIN ps_feature_value ON ps_feature_product.id_feature = ps_feature_value.id_feature
              LEFT JOIN ps_feature_lang ON ps_feature_value.id_feature = ps_feature_lang.id_feature
              LEFT JOIN ps_feature_value_lang ON ps_feature_value.id_feature_value = ps_feature_value_lang.id_feature_value
              LEFT JOIN ps_product_supplier ON ps_product.id_product = ps_product_supplier.id_product
              LEFT JOIN ps_supplier ON ps_product_supplier.id_supplier = ps_supplier.id_supplier

    Les valeurs 331 et 16 sont récupérées via l'url avec un get etc... Dans certains cas cette ligne n'est pas présente : AND ps_feature_product.id_feature_value = 16 (car non sélectionnée dans le formulaire par l'utilisateur) mais dans d'autres cas elle est bien présente.

    Merci d'avance.

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Février 2012
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 199
    Points : 71
    Points
    71
    Par défaut
    Bon en fait j'ai avancé et j'ai réussi en partie à régler mon problème sauf que maintenant j'en ai un autre, ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    SELECT DISTINCT ps_state.name AS nameSecteur, ps_product.state_id, ps_product.price, ps_product_lang.name, ps_product_lang.description, ps_product_lang.description_short, ps_supplier.name AS nameSup, ps_product_supplier.id_supplier AS idSup, ps_product.id_product
    FROM ps_product_lang
    JOIN ps_product ON ps_product_lang.id_product = ps_product.id_product
    JOIN ps_activiteproduct ON ps_product.id_product = ps_activiteproduct.id_product
    JOIN ps_activite ON ps_activiteproduct.id_activite = ps_activite.id_activite
    JOIN ps_state ON ps_product.state_id = ps_state.id_state
    JOIN ps_departement ON ps_state.id_state = ps_departement.state_id
    AND ps_product.id_product =3
    AND ps_product.id_product =5
    AND ps_product.id_product =21
    LEFT JOIN ps_product_supplier ON ps_product.id_product = ps_product_supplier.id_product
    LEFT JOIN ps_supplier ON ps_product_supplier.id_supplier = ps_supplier.id_supplier
    ORDER BY ps_product.id_product ASC
    Cette requête est censée me renvoyer toutes les infos des produits 3 5 et 21 mais j'ai un résultat vide. Que ce soit dans phpmyadmin ou dans mon appli.

  3. #3
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    AND ps_product.id_product =3
    AND ps_product.id_product =5
    AND ps_product.id_product =21
    Cette condition ne sera jamais vraie : quel chiffre est égal à 3, égal à 5, et en même temps egal à 21 ?

    Ceci fonctionnera mieux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     ps_product.id_product IN(3, 5, 21)
    Je verrai d'ailleurs plutôt ce filtre dans une clause WHERE plutôt que dans la condition de jointure...

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Février 2012
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 199
    Points : 71
    Points
    71
    Par défaut
    C'était ça merci

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

Discussions similaires

  1. Requête SQL LEFT OUTER JOIN
    Par dam28800 dans le forum Langage SQL
    Réponses: 42
    Dernier message: 27/02/2009, 14h41
  2. Besoin de retrouner des 0 aussi dans une requête SQL avec JOIN
    Par Jean-Marc68 dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 05/11/2007, 14h45
  3. calcul dans les requêtes et left join
    Par jejeman dans le forum Requêtes
    Réponses: 5
    Dernier message: 13/07/2007, 15h34
  4. Requête SQL avec "Join"
    Par RKU01 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 01/03/2007, 12h42
  5. Aide pour une requête et left join
    Par Lolo19 dans le forum Langage SQL
    Réponses: 5
    Dernier message: 26/08/2005, 08h09

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