Partage
  • Partager sur Facebook
  • Partager sur Twitter

Requete imbriquée

Problème pour imbriquer deux requetes.

Sujet résolu
    16 février 2012 à 14:04:28

    Bonjour.

    Depuis plusieurs jours je bute sur un problème : une requête imbriquée.

    Je m'explique, j'ai une requête qui extrait les données d'une table (table = comandes, données extraites = reference_article, quantite, prix_unitaire).
    Jusque là ca fonctionne.
    J'ai une deuxiemme table (articles) qui contient des données (reference_art, denomination_article, taille couleur, type_article).
    Je dois extraire la donnée type_article en fonction de la reference_article (provenant de la table des commandes), sachant que reference_article (commandes) et reference_art (articles) sont identiques.

    Je vous joins ici une portion de mon code dans lequel je dois imbriquer la deuxemme requête :

    // Calcul de la commande passée par ambasadrice
    $sql = "SELECT reference_article,quantite,prix_unitaire
    FROM commandes
    WHERE ambassadrice='$num_ambassadrice' and campagne='$campagne'"; 
    
    $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); 
    $total_amba=0;
    $reference_article=0;
    
    // on fait une boucle qui va faire un tour pour chaque enregistrement 
    while($data = mysql_fetch_assoc($req)) 
        { 
    	$prix=($data['prix_unitaire']);
    	$reference=($data['reference_article']);	
    	
    // on affiche les informations de l'enregistrement en cours 
    	
    	$ligne_article=0;
    	
    	$ligne_article=(($data['quantite']) * $prix);
        $total_amba=($total_amba+$ligne_article);
        
    	}
    


    D'avance je vous remercie pour vos précieux conseils.
    Amicalement, Taz.
    • Partager sur Facebook
    • Partager sur Twitter
      16 février 2012 à 14:11:26

      J'ai tenté de faire une jointure, mais j'avoue que je maitrise mal cette technique...
      Si on pouvait me mettre un exemple de code avec une jointure, cela m'aiderait grandement je pense.
      • Partager sur Facebook
      • Partager sur Twitter
        16 février 2012 à 14:20:44

        En suivant le tutoriel que tu me proposes :

        // Calcul de la commande passée par ambasadrice
        $sql = "SELECT commandes.reference_article,commandes.quantite,commandes.prix_unitaire
        FROM commandes
        INNER JOIN type_article
        ON commandes.reference_article = articles.reference_art
        WHERE commandes.ambassadrice='$num_ambassadrice' and commandes.campagne='$campagne'"; 
        
        $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); 
        $total_amba=0;
        $reference_article=0;
        
        // on fait une boucle qui va faire un tour pour chaque enregistrement 
        while($data = mysql_fetch_assoc($req)) 
            { 
        	$prix=($data['prix_unitaire']);
        	$reference=($data['reference_article']);	
        	
        // on affiche les informations de l'enregistrement en cours 
        	
        	$ligne_article=0;
        	
        	$ligne_article=(($data['quantite']) * $prix);
            $total_amba=($total_amba+$ligne_article);
            
        	}
        


        Cela me donne une erreur :
        Erreur SQL !
        SELECT commandes.reference_article,commandes.quantite,commandes.prix_unitaire FROM commandes INNER JOIN type_article ON commandes.reference_article = articles.reference_art WHERE commandes.ambassadrice='90145101' and commandes.campagne='14'
        Table 'tazetpat_CommandesAmba.type_article' doesn't exist
        • Partager sur Facebook
        • Partager sur Twitter
          16 février 2012 à 14:21:42

          ... INNER JOIN type_articles ????

          Va revoir la syntaxe, tu fais n'importe quoi là.
          • Partager sur Facebook
          • Partager sur Twitter
            16 février 2012 à 14:24:21

            Dans INNER JOIN je dois mettre le nom de la table alors ?
            Mais dans ce cas, ou est ce que je spécifie le nom de la donnée que je veux extraire ?
            • Partager sur Facebook
            • Partager sur Twitter
              16 février 2012 à 14:25:15

              A ton avis, où est-ce qu'on met les colonne qu'on veut récupérer ??? Ce serait bien de lire plus que 3 lignes des liens qu'on te donne...
              • Partager sur Facebook
              • Partager sur Twitter
                16 février 2012 à 14:41:53

                Désollé, mais comme je l'ai dit, je ne maitrise pas le INNER JOIN
                • Partager sur Facebook
                • Partager sur Twitter
                  16 février 2012 à 14:43:09

                  Désolée, mais toutes les réponses sont dans le tutoriel. Fais un effort.
                  • Partager sur Facebook
                  • Partager sur Twitter
                    16 février 2012 à 15:05:53

                    J'ai beau lire et relire, je dois me tromper qulque part.

                    Je donne ici mon code AVEC la jointure :
                    $sql = "SELECT commandes.reference_article,commandes.quantite,commandes.prix_unitaire
                    FROM commandes
                    INNER JOIN articles
                    ON commandes.reference_article = articles.reference_art
                    WHERE commandes.ambassadrice='$num_ambassadrice' and commandes.campagne='$campagne'"; 
                    
                    $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); 
                    $total_amba=0;
                    $reference_article=0;
                    
                    // on fait une boucle qui va faire un tour pour chaque enregistrement 
                    while($data = mysql_fetch_assoc($req)) 
                        { 
                    	$prix=($data['prix_unitaire']);
                    	$reference=($data['reference_article']);	
                    	ECHO ($data['type_article']); ECHO "      "; <couleur nom="rouge"><=== ICI j'ai rajouté cette ligne pour tester si il me sort les données : RIEN !</couleur>
                    // on affiche les informations de l'enregistrement en cours 
                    	
                    	$ligne_article=0;
                    	
                    	$ligne_article=(($data['quantite']) * $prix);
                        $total_amba=($total_amba+$ligne_article);
                        
                    	}
                    


                    Ca ne marche toujours pas !
                    • Partager sur Facebook
                    • Partager sur Twitter
                      16 février 2012 à 15:07:23

                      "Ca ne marche pas" n'est pas une description intéressante du problème.
                      • Partager sur Facebook
                      • Partager sur Twitter
                        16 février 2012 à 15:33:21

                        J'ai fini par trouver l'astuce.
                        Désollé d'avoir été aussi 'lent à comprendre'...
                        Merci.
                        • Partager sur Facebook
                        • Partager sur Twitter

                        Requete imbriquée

                        × 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