Partage
  • Partager sur Facebook
  • Partager sur Twitter

Requetes avec jointure

    9 décembre 2018 à 19:04:48

    Bonjour,

    Je souhaite créer une requete avec jointure sur mon code de moteur de recherche.

    J'ai cette requête qui ne me retourne vide :

     Et voici mes deux tables concernées :

    -
    Edité par jackycob5 10 décembre 2018 à 18:18:38

    • Partager sur Facebook
    • Partager sur Twitter
      9 décembre 2018 à 20:11:08

      Salut, 

      il ne faut pas utiliser MATCH...AGAINST parce que tu le veux ou que c'est "cool" et vu ton code tu ne sais pas trop comment ça fonctionne. un LIKE ou = (suivant le type de recherche) serait suffisant selon les définitions de tes tables.

      Un code moderne n'utilise plus les fonctions mysql_ mais mysqli ou PDO, pas besoin de faire un urldecode sur $_GET.

      Quand tu ouvres une chaine avec ", pas besoin de concaténer PHP reconnait les variables dans ce cas (ça te fait trop de concaténations inutiles)

      On comprend pas pourquoi tu as d'un côté un varchar(6) et de l'autre varchar(10). 

      Faute de frappe ?  Tu utilises products dans ta requête et tu nous montres produits dans la définition de la table

      -
      Edité par WillyKouassi 9 décembre 2018 à 20:29:11

      • Partager sur Facebook
      • Partager sur Twitter
      le bienfait n'est jamais perdu
        9 décembre 2018 à 22:06:50

        Merci Philodick $code_article me retourne bien le code_article dans la table produits, là ça marche bien.

        Mon code n'est pas moderne, mais j'apprends comme je peux tout seul ;-)

        Je n'utilise pas MATCH...AGAINST parce "que je le veux ou que c'est "cool"", c'est quoi cette réflexion, je l'utilise parce que j'ai suivi un tuto et que c'était dedans, j'apprends c'est tout. Si tu veux  m'aider, donne moi un code qui corrige le mien, ce sera trop cool, pouf pouf pouf  ;-)

        Merci pour vos réponses

        -
        Edité par jackycob5 9 décembre 2018 à 22:12:20

        • Partager sur Facebook
        • Partager sur Twitter
          9 décembre 2018 à 23:13:33

          je ne sais pas quel tuto tu suis avec l'utilisation de fonctions comme mysql_xxx mais abandonne le maintenant (ce n'est pas une obligation, mais un conseil).

          Pour le MATCH...AGAINST , je suppose que dans le tuto que tu as suivi , ils t'ont parlé de FULLTEXT quelque part non ? 

          Je ne pourrais pas corriger tout ton code (parce que tout est à corriger et tu as des indications dans mon précédent message) , mais la question reste posée tout de même pourquoi dans ta requête tu as "products" et ta table s'appelle "produits" dans ta définition, c'est dû à une faute de frappe ou tu as les 2 tables et "products" est vide.

          -
          Edité par WillyKouassi 9 décembre 2018 à 23:14:12

          • Partager sur Facebook
          • Partager sur Twitter
          le bienfait n'est jamais perdu
            10 décembre 2018 à 7:30:01

            Voici ma requête corrigée avec produits à la place de products :

            Et j'ai bien un index fulltext sur code_article qui n'apparaît pas parce que j'ai synthétisé le code pour simplifier pour les personnes qui voudront bien m'aider à construire ma requête. Ma table produits est presque vide parce que je teste juste sur ce produit, j'en ai plusieurs millions en réel. Oui mon code est vieux et obsolète mais je reprends le travail de quelqu'un alors je me concentre sur le fonctionnement et après je vais l'actualiser. Si je me permet de poster, c'est que je n'arrive pas à me débrouiller avec cette requ^te. Merci pour votre aide

            -
            Edité par jackycob5 10 décembre 2018 à 18:18:54

            • Partager sur Facebook
            • Partager sur Twitter
              10 décembre 2018 à 9:38:39

              Donc un echo de $query te donne bien ceci ? :

              SELECT article_alter,commentaire
                           FROM alternatives
                           INNER JOIN produits
                           ON alternatives.code_article = produits.code_article
                           WHERE alternatives.code_article = 'BDY320'


              Cela dit en passant, je ne vois pas vraiment l'intérêt de faire une jointure dans la mesure où tu ne sélectionnes que des colonnes de la première table.

              • Partager sur Facebook
              • Partager sur Twitter
                10 décembre 2018 à 10:10:23

                Merci Philodick

                Oui ça me renvoie bien ce résultat. Je ne suis peut-être pas obligé de faire une jointure mais je ne sais pas comment tourner la requête pour récupérer ce que je recherche.

                • Partager sur Facebook
                • Partager sur Twitter
                  10 décembre 2018 à 10:39:57

                  Vraiment bizarre, tu as testé cette requête directement dans phpMyAdmin ?
                  • Partager sur Facebook
                  • Partager sur Twitter
                    10 décembre 2018 à 11:44:49

                    Non en fait, je récupère bien le contenu de code_article si je fais un echo mais la requête ne fonctionne pas, c'est pour ça que je demande l'aide, j'ai répondu un peu vite, désolé.
                    • Partager sur Facebook
                    • Partager sur Twitter
                      10 décembre 2018 à 11:48:26

                      Et donc tu as testé cette requête directement dans phpMyAdmin ?
                      • Partager sur Facebook
                      • Partager sur Twitter
                        10 décembre 2018 à 12:21:57

                        Dans phpmyadmin, je récupère la totalité de la table alternatives et pas juste le code_article de la table alternatives qui correspond au code_article de la table produits tout en tenant compte du $_POST['search'] ou $_GET['search'] récupéré dans la recherche

                        -
                        Edité par jackycob5 10 décembre 2018 à 12:31:59

                        • Partager sur Facebook
                        • Partager sur Twitter
                          10 décembre 2018 à 13:29:32

                          Allez j'essaye encore un coup :

                          As-tu testé la requête suivante directement dans phpMyAdmin ? :

                          SELECT article_alter,commentaire
                                       FROM alternatives
                                       INNER JOIN produits
                                       ON alternatives.code_article = produits.code_article
                                       WHERE alternatives.code_article = 'BDY320'



                          • Partager sur Facebook
                          • Partager sur Twitter
                            10 décembre 2018 à 13:51:03

                            MySQL a retourné un résultat vide (c'est-à-dire aucune ligne). (traité en 0,0000 seconde(s).)
                            SELECT article_alter,commentaire FROM alternatives INNER JOIN products ON alternatives.code_article = products.code_article WHERE alternatives.code_article = 'BDY320'

                            SELECT article_alter,commentaire
                                         FROM alternatives
                                         INNER JOIN products
                                         ON alternatives.code_article = products.code_article
                                         WHERE alternatives.code_article = 'BDY320'
                            Et je récupère dans la table products après le produit lié de la table alternatives, c'est pour ça que je fais une jointure. Après avoir trouvé le produit qui est lié dans la table alternatives, je vais chercher le produit trouvé et afficher ses infos qui se trouvent dans la table products.

                            -
                            Edité par jackycob5 10 décembre 2018 à 14:05:09

                            • Partager sur Facebook
                            • Partager sur Twitter
                              10 décembre 2018 à 14:16:18

                              On s'y perd, la table c'est "produits" ou "products" ?

                              Et article_alter et commentaire sont toutes deux des colonnes de la table alternatives.

                              • Partager sur Facebook
                              • Partager sur Twitter

                              Requetes avec jointure

                              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                              • Editeur
                              • Markdown