pcgpegase
Messages postés96Date d'inscriptionlundi 24 novembre 2003StatutMembreDernière intervention24 avril 2007
-
30 mai 2006 à 09:20
pcgpegase
Messages postés96Date d'inscriptionlundi 24 novembre 2003StatutMembreDernière intervention24 avril 2007
-
1 juin 2006 à 22:27
Bonjour tout le monde !
Bon je vais essayer de vous expliquer le mieux possible mon problème parce que c'est assez compliqué ^^
Je dois faire des requètes de sélections en calculant la somme du chiffre d'affaire (contenu dans la table "contrats")
Je vous donne un exemple :
On prend un architecte avec l'ID "1" et comme nom "Paul", on l'associe à un dossier et on lui ajoute 3 chantiers, ce qui nous donne, 1 dossier avec en "id_architecte 1" et 3 chantiers avec id 1,2,3 et comme "id_dossier = 1". J'espère que jusque là vous me suivez. Maintenant à la comptabilité, ils vont associé un client (ça on s'enfout pour la requète) avec 1 architecte et 1 seul chantier de ce même architecte. Donc si vous me suivez, on aura alors dans la table "contrats" : "id = 1, id_architecte = 1, et on va prendre le 2e chantier "id_chantier = 2", la comptabilité va lui mettre un chiffre d'affaire de 500? par exemple.
Jusque là pas de soucis ! Mais quand on a plusieurs contrats pour le même architecte, il faut que lors de ma requète de sélection, je calcule la somme totale du chiffre d'affaire du dossier de cet architecte par ces chantiers ! J'ai réussi à faire cette requète mais le problème c'est qu'il ne m'affiche pas les chantiers n'ayant pas de chiffre d'affaire...
Je vous poste ma requète :
Dans la variable $champs, j'y ai mis les champs nécessaire et j'ai également mis : sum(clients_contrats.Tarif)
Tarif = chiffre d'affaire.
(je vous mets pas la liste parce que c'est trop long mais si c'est nécessaire, je la mettrais)
$sql 'SELECT '.$champs.' FROM archis_chantiers, archis_dossiers, archis_fiches, clients_contrats WHERE archis_chantiers.id_dossier archis_dossiers.id AND archis_dossiers.id_archi = archis_fiches.id AND clients_contrats.Ref_Chantier = archis_chantiers.id GROUP BY archis_chantiers.id ORDER BY archis_dossiers.id';
$req = mysql_query($sql) or die ('Erreur SQL : '.$sql.'
'.mysql_error());
$fields = mysql_num_fields($req);
pcgpegase
Messages postés96Date d'inscriptionlundi 24 novembre 2003StatutMembreDernière intervention24 avril 20071 1 juin 2006 à 22:27
Coucou,
Pour répondre à sidf, alors le truc c'est que ça marche comme ça, c'est à dire à chaque boucle, je balance une requète pour savoir si c'est associé, ça fonctionne, j'ai exactement les infos qu'il me faut mais le hic, c'est qu'il y à 20 000 enregistrements, et l'éexécution du script dur entre 20 et 30 minutes >_<
C'est pour ça que je cherche un moyen de le faire en une requète :/
Et pour répondre à FhX, j'ai déjà fouillé, et ma requète actuelle est déjà basée sur du LEFT JOIN ou INNER JOIN mais je reviens au même problème...
J'ai quand même bien avancé dans le sens où j'arrive à afficher les bonnes infos ;)