ebouilleur Posté 11 Avril 2012 Posté 11 Avril 2012 (modifié) Bonjour, J'ai 3 tables : client, facture, prestation. Je souhaite afficher un tableau récapitulatif qui doit m'afficher le prix de la facture, cad la somme de toutes les prestations d'un facture (qui pour ne pas simplifier n'ont pas le meme montant de tva et/ou de quantité) Pour le moment, j'essaye deja d'avoir la somme juste des montant htva et deja je coince. Voila ce que ca donne : SELECT f.id_facture, f.numero_facture, f.date_facture, c.nom, c.ville, p.quantite, p.prix_htva, p.tva FROM facture as f LEFT JOIN client AS c ON (f.id_client=c.id_client) LEFT JOIN (SELECT SUM(prix_htva) FROM prestation GROUP BY f.id_facture) AS p ON (f.id_facture=p.id_facture) WHERE f.id_membre=$sess_id_pseudo order by $choix_order_by desc limit $limite,$nombre Phpmyadmin me sort que les colonnes p.quantite, p.prix_htva, p.tva n'existe pas Une idée? Merci Modifié 11 Avril 2012 par ebouilleur
jcaron Posté 11 Avril 2012 Posté 11 Avril 2012 Normal, p n'est pas ta table prestation, mais le résultat de la requête SELECT SUM(prix_htva) FROM prestation GROUP BY f.id_facture (une sous-requête, donc), qui n'a qu'une seule colonne. Deux solutions: soit tu rajoutes dans cette sous-requête les autres colonnes utiles, soit, et c'est probablement plus simple et plus logique, tu déplaces le SUM et le GROUP BY au niveau de la requête principale: SELECT f.id_facture, f.numero_facture, f.date_facture, c.nom, c.ville, SUM(p.quantite), SUM(p.prix_htva), SUM(p.tva) FROM facture as f LEFT JOIN client AS c ON (f.id_client=c.id_client) LEFT JOIN prestation p ON (f.id_facture=p.id_facture) WHERE f.id_membre=$sess_id_pseudo GROUP BY f.id_facture, f.numero_facture, f.date_facture, c.nom, c.ville ORDER BY $choix_order_by desc LIMIT $limite,$nombre Jacques.
ebouilleur Posté 12 Avril 2012 Auteur Posté 12 Avril 2012 Bonsoir Jacques, OK merci je vois l'idée et en effet ca fonctionne mieux Après c'est sur que je vais pas faire un somme de tva, mais le principe est ok Merci
jcaron Posté 12 Avril 2012 Posté 12 Avril 2012 Ça aurait pu être le montant de la TVA (par opposition au taux). Un simple sum(p.prix_htva * p.tva) devrait faire l'affaire si c'est un taux. Jacques.
ebouilleur Posté 13 Avril 2012 Auteur Posté 13 Avril 2012 Bon au final ca donne ca : SELECT f.id_facture, p.id_prestation, f.numero_facture, f.date_facture, c.nom, c.ville, sum( (p.prix_htva + ( (p.prix_htva * p.tva) /100 ) ) * p.quantite) AS prixFactureFROM facture fLEFT OUTER JOIN client c ON ( f.id_client = c.id_client ) LEFT OUTER JOIN prestation p ON ( f.id_facture = p.id_facture ) WHERE f.id_membre =1GROUP BY f.id_factureLIMIT 0 , 30 Merci
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant