Partage
  • Partager sur Facebook
  • Partager sur Twitter

Requete sur 2 tables

Sujet résolu
    1 septembre 2010 à 21:39:30

    Bonjour,
    soit une table x (code, nom, prix, image)
    et une table y (code, nom, prix, image).
    Seule la variable prix change entre ces 2 tables.

    Mon souhait est donc de faire une requete sur ces 2 tables pour afficher le nom, le prix (de la table x et de la table y).

    Je suis parti sur un SELECT code, nom, prix, image FROM x, y

    C'est là que je bloque. En faisant un $prix= $donnees['prix']; , je ne récupère qu'un seul prix.

    Comment récupérer les 2 ?
    • Partager sur Facebook
    • Partager sur Twitter
      1 septembre 2010 à 22:02:01

      le select doit être un select de jointure.
      Si je lis ton select c'est un produit cartésien.
      De plus tu ne "demandes" qu'une seule fois la récupération des colonnes.
      Exemple de jointure :
      SELECT x.code as codeX, y.code as codeY, x.nom, y.nom, x.prix, y.prix
      FROM x, y
      WHERE x.code = y.code;
      

      Mets des alias partout : as ....
      En fonction de tes besoins extrais les colonnes qui t'intéressent.
      Une bonne pratique, à mon avis, est de tester d'abord la requête SQL dans MySQL QueryBrowser ou PHPMyADMIN. Si elle fonctionne elle fonctionnera avec PHP. ça permet de travailler étape par étape et de gagner du temps.
      • Partager sur Facebook
      • Partager sur Twitter
        1 septembre 2010 à 22:30:26

        Ok je verrais ç_a demain.

        je sors des vendanges là, je suis ko.

        Merci
        • Partager sur Facebook
        • Partager sur Twitter
          1 septembre 2010 à 22:51:46

          Cette requête devrait suffire vu que les informations dans les 2 tables sont identiques, sauf le prix.
          SELECT x.code, x.nom, x.prix AS prix_x, y.prix AS prix_y, x.image
          FROM tablex x
          JOIN tabley y ON x.code = y.code
          
          • Partager sur Facebook
          • Partager sur Twitter
            3 septembre 2010 à 0:40:55

            Je reviens à vous car il me sort une erreur:

            J'ai fait:
            <?php 
              $data = mysql_query("SELECT x.product_name, x.offline_price, x.buyat_short_deeplink_url, x.offline_price AS offline_price_x, y.offline_price AS offline_price_y, FROM table1 x JOIN table2 y ON x.product_code = y.product_code")
             while ($donnees1 = mysql_fetch_array($data))
            {
             $nom= $donnees1['x.product_name'];
                 $prix1= $donnees1['x.offline_price'];
            ....
            
            echo '.......';
            }   ?>
            


            Il me sort une erreur dans la requete !?!?
            • Partager sur Facebook
            • Partager sur Twitter
              3 septembre 2010 à 5:26:46

              et le nom de tes tables sont table1 et table2 ?
              • Partager sur Facebook
              • Partager sur Twitter
                3 septembre 2010 à 10:55:27

                Non j'ai bien sur mis le bon nom des tables dans mon fichier. J'ai changé ici pour mettre l'exemple.
                • Partager sur Facebook
                • Partager sur Twitter
                  3 septembre 2010 à 10:56:56

                  Citation : Revolucion


                  Il me sort une erreur dans la requete !?!?


                  Et on est sensé deviné laquelle ?
                  En plus si tu n'as pis de mysql_errror(), m'étonnerai qu'il te mettre une erreur de requête
                  Ça serai pas plutôt un point virgule manquant ? :-°
                  • Partager sur Facebook
                  • Partager sur Twitter
                    3 septembre 2010 à 11:07:40

                    Salut,

                    peut etre qqun qui a une illumination :).

                    Non plus sérieusement, voilà la dernière requête que j'ai faite:
                    <?php      
                      $sql = mysql_query("SELECT x.product_name, x.offline_price AS offline_price_x, y.offline_price AS offline_price_y FROM table1 x JOIN table2 y ON x.product_code = y.product_code WHERE x.product_code='".$product_code."'");
                    $data = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());	  
                     while ($donnees1 = mysql_fetch_array($data))
                    {
                     $nom= $donnees1['x.product_name'];
                      echo   '<h1>',$nom,'</h1>'; 
                               }
                           ?>
                    


                    Il m'affiche "mysql_query() expects parameter 1 to be string". Quand je fais un echo de product_code, pas de soucis, il m'affiche la bonne valeur.
                    • Partager sur Facebook
                    • Partager sur Twitter
                      3 septembre 2010 à 11:13:16

                      Ah ba non ! là tu fais un mysql_query sur le résultat d'un autre mysql_query o_O
                      <?php  
                      $sql = "SELECT x.product_name, x.offline_price AS offline_price_x, y.offline_price AS offline_price_y FROM table1 x JOIN table2 y ON x.product_code = y.product_code WHERE x.product_code='".$product_code."'";    
                      $data= mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());	  
                      while ($donnees1 = mysql_fetch_array($data))
                      {
                         $nom= $donnees1['x.product_name'];
                         echo   '<h1>',$nom,'</h1>'; 
                      }
                      ?>
                      

                      • Partager sur Facebook
                      • Partager sur Twitter
                        3 septembre 2010 à 11:17:09

                        Car j'ai rajouté la ligne pour le mysql error sans enlever le premier mysql query, ca m'apprendra à ne quasimment jamais utiliser le mysql error.....
                        La requête s'exécute apparamment mais j'ai de nouveau un
                        Undefined index: x.product_name in C:\wamp\www\texte.php on line 54.

                        N'ayant jamais touché aux jointures, ca doit venir de la forme de $nom= $donnees1['x.product_name'];


                        Je vais fouiller sur le net.

                        Merci

                        EDIT: C'est maintenant que je comprends l'intêret des AS dans la requête... Merci à tous
                        • Partager sur Facebook
                        • Partager sur Twitter
                          3 septembre 2010 à 11:21:15

                          Effectivement pour la requête le pré-fixage des noms est valable mais dans le php
                          <?php $nom= $donnees1['product_name']; devrait fonctionner
                          • Partager sur Facebook
                          • Partager sur Twitter
                            3 septembre 2010 à 11:22:11

                            En fait je ne comprenais pas trop l'utilité de mettre des AS, je viens de capter maintenant.

                            Merci, BOnne journée
                            • Partager sur Facebook
                            • Partager sur Twitter

                            Requete sur 2 tables

                            × 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