begin process at 2012 05 31 14:47:49
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Base de données

 > 

MySQL

 > 

Requète MySQL compliquée (ou pas?)


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Requète MySQL compliquée (ou pas?)

mardi 30 mai 2006 à 09:20:49 | Requète MySQL compliquée (ou pas?)

pcgpegase

Bonjour tout le monde !


Bon je vais essayer de vous expliquer le mieux possible mon problème parce que c'est assez compliqué ^^

Alors voilà, je dispose de 5 tables :
- architectes_fiches (id,nom,prénom etc...)
- chantiers_architectes (id, id_dossier,nom chantiers, budget etc...)
- dossiers_architectes (id,id_architecte,date,commercial etc...)
- contrats_clients (id, id_architecte, id_chantier, chiffre_daffaire etc...)
- régions (id, region)

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.'<br />'.mysql_error());
$fields = mysql_num_fields($req);

for ($i = 0; $i < $fields; $i++) {
  $temp = mysql_field_name($req, $i);
  $header .= $temp . "\t";


while($row = mysql_fetch_row($req)) {
  $line = '';
  foreach($row as $value) {                                           
      if ((!isset($value)) OR ($value == "")) {
          $value = "\t";
      }
      else {
          $value = str_replace('"', '""', $value);
          $value = '"' . $value . '"' . "\t";
      }
      $line .= $value;
  }
  $data .= trim($line)." €\n";
}

$data = str_replace("\r","",$data);

$file = "Archis_Total.xls";
$Fnm = '../../exports/'.$file;
$inF = fopen($Fnm,"w");
$data = str_replace("<br />","",$data);
$data = $header."\n".$data;  
fputs($inF,$data);

Comme voius l'aurez compris, une fois que j'ai selectionnée les données, je les mets dans un fichier excel, c'est pour les patrons...

J'espère que j'ai pu être assez clair, en tout cas, excuser moi si ça ne l'est pas :x

Ca fait une semaine que je galère avec, j'ai fouillé toute les docs MySQL pour les jointures mais j'ai pas trouvé mon bonheur donc HELLLP ! :x

Merci d'avance.
mardi 30 mai 2006 à 09:37:26 | Re : Requète MySQL compliquée (ou pas?)

pcgpegase

En fait, je viens de m'apercevoir que je me suis trompé sur un point :

"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..."

Ce n'est pas que les chantiers n'ont pas de chiffre d'affaire, mais c'est qu'ils ne sont associés à aucun contrats!

C'est d'ailleurs pour ça que la requète ne les affiche pas, normalement...

Mais moi je veux les afficher ! :x




jeudi 1 juin 2006 à 20:27:29 | Re : Requète MySQL compliquée (ou pas?)

sidf

salut,

$sql = 'SELECT '.$champs.' FROM archis_chantiers,
archis_dossiers,
archis_fiches
WHERE archis_chantiers.id_dossier = archis_dossiers.id
AND archis_dossiers.id_archi = archis_fiches.id
GROUP BY archis_chantiers.id ORDER BY archis_dossiers.id';

???
jeudi 1 juin 2006 à 20:29:30 | Re : Requète MySQL compliquée (ou pas?)

sidf

et ensuite à chaque tour,
tu cherches si un contrat lui est associé
jeudi 1 juin 2006 à 20:32:10 | Re : Requète MySQL compliquée (ou pas?)

FhX

Cherche du coté de INNER JOIN, LEFT JOIN, RIGHT JOIN et compagnie... :)
jeudi 1 juin 2006 à 22:27:06 | Re : Requète MySQL compliquée (ou pas?)

pcgpegase

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 ;)

bye




Cette discussion est classée dans : id, value, archis, chantiers, architecte


Répondre à ce message

Sujets en rapport avec ce message

Fonction include sql dans un objet [ par achovovich ] Bonjour,Je debute avec les objet en PHP et la je bloc sur une fonction qui fait un insert sqlAlors le select marche tres bien, mais l'insert ne veu pa Php/formulaire, chagement d'affichage dans un select... [ par noSnoR ] Comment pourrions nous afficher dans un formulaire les données d'une table MySql ? Je sais faire pour les 'text' ou autre submit, mais ce qui me bloqu signiature dynamique [ par gadjet76 ] bonjour je voudrai crée un générateur de signature dynamique comme ceci [http://combatarmshq.com/dynamic-signatures.html] useur nam  gadjet76eu région Besoin d'aide pour checkbox [ par patator_35 ] Bonjour,je suis en train de finaliser la mise en place d'un site web basé sur oscommerce. Je suis encore débutant en php.J'ai rectifié une contributio actualiser le tableau sans recharger la page [ par lamiae2 ] Bonjour, je voulais savoir si quand on appelle une requête UPDATE tel que : mysql_query("UPDATE table SET lu=1 WHERE id='$variable'");  l'update de la mon formulaire ne fonctionne pas [ par tif27940 ] Bonjour, voila j'ai formulaire : [code=html] " id="frmSaisie" name="frmSaisie"> <span class="vmicon vm2-bil Petit probléme d'affichage [ par tif27940 ] Bonjour, voila je suis sous virtuemart qui dans le panier crée un tableau pour chaque produit rajouter mais voila je voudrais si la categorie et la m Table temporaire MySQL [ par ryosaebasgc ] Bonjour, voilà j'ai un petit soucis, j'ai pour la première fois utiliser une requette avec la création d'une table temporaire. Dans l'interface PHP afficher les derniers enregistrements d'un id [ par msi079 ] salut a tous j'ai 2 tables : * client (id_client,nom) * articles (id_articles,reference,prix_unitaire,quantité) il se trouve que un client fait p Afficher une requête en fonction du dernier id [ par msi079 ] slt . je un soucis avec mon code php . je voudrais afficher une requète en utilisant le dernier enregistrement d'une table de la base de donnée . j


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,437 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales