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 :

Boucle a cause du LEFT JOIN [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 124
    Par défaut Boucle a cause du LEFT JOIN
    Bonjour,

    J'ai 3 tables.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    commande: id_commande, id_client, ref_commande....../*comprend les infos et références de la commande.*/
    commande_prod: id_commande_prod, id_commande, id_produit, tx_tva, prix_ht..../*comprend les produits et prix de commandes. (id_commande est utilisé pour la jointure)*/
    piece_jointe: id_pj, id_comm, nom_fichier..../*peut contenir ou non des pièces jointes*/
    Je cherche à afficher la somme totale par commande et afficher les pièces jointes ensembles si elles existent.

    Mon code actuel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT DISTINCT c.ref_commande, SUM(cd.prix_ht * (1+(cd.tx_tva/100))) as ttc, GROUP_CONCAT(DISTINCT pj.nom_fichier)AS fichier
    FROM commande c
    INNER JOIN commande_prod cd USING(id_commande)
    LEFT JOIN piece_jointe pj ON c.id_commande=pj.id_comm
    WHERE c.id_client=44
    GROUP BY c.id_commande
    Ça fonctionne presque. Mon problème est que la somme est calculée autant de fois qu'il y a de pièces jointes.

    Une idée svp?

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Tu peux utiliser une sous-requête si tu y tiens vraiment mais tu pourrais aussi faire deux requêtes tout simplement.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT s.*, GROUP_CONCAT(nom_fichier) AS fichiers FROM
    (SELECT c.id_commande, c.ref_commande, SUM(cd.prix_ht * (1+(cd.tx_tva/100))) as ttc
    FROM commande c
    INNER JOIN commande_prod cd USING(id_commande)
     WHERE c.id_client=44
    GROUP BY c.id_commande
    ) s 
    LEFT JOIN piece_jointe pj ON s.id_commande=pj.id_comm
    GROUP BY s.id_commande
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre expérimenté
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2014
    Messages
    352
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2014
    Messages : 352
    Par défaut
    select SUM(cd.prix_ht * (1+(cd.tx_tva/100))) as ttc,c.ref_commande,p.nom_fichier from commande_prod cd,commande c,piece_jointe p
    where c.id_commande = cd.id_commande and cd.id_commande = p.id_commande group by cd.id_commande;

  4. #4
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 124
    Par défaut
    Merci Sabotage, ça fonctionne parfaitement.

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

Discussions similaires

  1. [MySQL] Problème sur Boucle While après un LEFT JOIN
    Par matperino dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 28/05/2007, 17h43
  2. [Performance] LEFT JOIN vs SELECT dans une boucle (PHP)
    Par frochard dans le forum Requêtes
    Réponses: 4
    Dernier message: 28/10/2005, 17h45
  3. Interbase et left join
    Par Zog dans le forum Bases de données
    Réponses: 4
    Dernier message: 23/03/2004, 08h55
  4. Non coincident MySQL (Left Join)
    Par Remiguel dans le forum Requêtes
    Réponses: 6
    Dernier message: 03/11/2003, 21h25
  5. Export d'une vue avec LEFT JOIN
    Par schnourf dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 22/05/2003, 13h57

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