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

PHP & Base de données Discussion :

Problème de jointure entre 3 table [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Débutant  
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 096
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 096
    Points : 944
    Points
    944
    Par défaut Problème de jointure entre 3 table
    Bonjour à tous,

    je dois extraire des informations qui sont dans trois table, concernant un produit.

    J'ai l'id d'un produit 1.

    Les informations que j'ai besoin sont:
    Table ps_produit:
    id_produit
    show_price
    on_sale

    table ps_produit_lang:
    id_product
    id_lang
    name

    Table ps_specific_price
    id_product
    reduction
    reduction_type
    from
    to

    Toutes mes table on un point comment : id_product

    J'ai donc fait la jointure de cette maniere
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    	$product_info = Db::getInstance()->ExecuteS('SELECT * FROM '._DB_PREFIX_.'product p
    		INNER JOIN '._DB_PREFIX_.'product_lang pl ON p.id_product = pl.id_product
    		INNER JOIN '._DB_PREFIX_.'specific_price sp ON p.id_product = sp.id_product
    		WHERE p.id_product = '.$id_product.' AND p.show_price = 1 AND pl.id_lang = '.(($cookie->id_lang) ? $cookie->id_lang : Configuration::get('PS_LANG_DEFAULT'))
    		);
     
    echo $numRows = (int)(Db::getInstance()->numRows());
    le problème que j'ai, c'est quand j'enlève ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INNER JOIN '._DB_PREFIX_.'specific_price sp ON p.id_product = sp.id_product
    ca marche très bien
    Mais quand je l'ajoute, $numRows me retourne 0

    Je pense que ma troisème jointure n'est pas correcte.
    Comment puis-je a corriger pour les informations des trois table?

    es-ce que je vous ai fourni assez d'information?

    merci
    Il ne suffit pas de tout savoir. Vouloir et persévérer, c'est déjà presque tout!

  2. #2
    Inactif
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 13
    Points : 14
    Points
    14
    Par défaut
    Salut,

    Peut etre en modifiant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INNER JOIN '._DB_PREFIX_.'specific_price sp ON p.id_product = sp.id_product
    par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LEFT JOIN '._DB_PREFIX_.'specific_price sp ON p.id_product = sp.id_product
    Cdt,

  3. #3
    Débutant  
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 096
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 096
    Points : 944
    Points
    944
    Par défaut
    Ben oui ca macrhe,
    Mais je suis un peu confu car j'avais essayé ceci sans succès.
    Mais je pense que mon problème était aussi ailleurs....

    Merci
    Il ne suffit pas de tout savoir. Vouloir et persévérer, c'est déjà presque tout!

  4. #4
    Membre éclairé Avatar de EIN-LESER
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2008
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 703
    Points : 778
    Points
    778
    Par défaut
    Pense au bouton resolu si tu a trouvé .

    Sinon tu peux faire plus simplement:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select * from table1 AS t1, table2 AS t2 where t1.id = t2.id order by t1.id
    Petit exemple simple de comment faire tes recherches sur plusieures tables sans te perdre
    Spécialiste des questions bêtes

    ”If you can't explain it simply, you don't understand it” (Ce que tu ne peux pas expliquer simplement, tu ne le comprends pas) Albert Einstein

    Si une reponse vous plait ou vous a aidé n'hesitez pas a voter pour

  5. #5
    Expert éminent sénior

    Avatar de FirePrawn
    Homme Profil pro
    Consultant technique
    Inscrit en
    Mars 2011
    Messages
    3 179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant technique

    Informations forums :
    Inscription : Mars 2011
    Messages : 3 179
    Points : 19 373
    Points
    19 373
    Par défaut
    EIN-LESER,

    Ce n'est pas très judicieux de conseiller l'utilisation de jointures "manuelles". Les join existent pour une bonne raison : l'optimisation.

    Il sera donc toujours plus efficace d'utiliser les jointures avec le mot JOIN que la syntaxe que tu as donné.
    Avant toute chose : lire le mode d'emploi du forum et ses règles.
    Je ne réponds pas aux questions techniques en MP.

  6. #6
    Membre éclairé Avatar de EIN-LESER
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2008
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 703
    Points : 778
    Points
    778
    Par défaut
    Tout a fait daccord avec toi pour l'optimisation mais pour les debutants ou en cas de non comprehension d'une requette avec jointure il peut, je pense, etre judicieux de se rapeller la possibilité de le faire en manuel
    Spécialiste des questions bêtes

    ”If you can't explain it simply, you don't understand it” (Ce que tu ne peux pas expliquer simplement, tu ne le comprends pas) Albert Einstein

    Si une reponse vous plait ou vous a aidé n'hesitez pas a voter pour

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

Discussions similaires

  1. Problème de jointures entre 3 tables
    Par Ben001 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 30/09/2009, 19h04
  2. [MySQL] Probléme de jointure entre deux tables
    Par super-java dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 12/06/2008, 14h49
  3. Problème de Jointure entre plusieurs tables
    Par Stouille89 dans le forum JDBC
    Réponses: 12
    Dernier message: 11/12/2007, 14h16
  4. Problème de jointure entre 2 tables Access
    Par MITCH31 dans le forum VBA Access
    Réponses: 8
    Dernier message: 14/12/2005, 14h31
  5. Problème de jointure entre 3 tables
    Par Yphon dans le forum Langage SQL
    Réponses: 7
    Dernier message: 21/09/2005, 15h58

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