Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2876 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  SQL besoin d'un coup de main sur une requete svp (och).

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

SQL besoin d'un coup de main sur une requete svp (och).

n°542098
kayasax
Posté le 17-10-2003 à 10:56:40  profilanswer
 

:hello: a tous,
ca fait longtemps que j'ai pas pratique sql et la je galere...
je cherce a faire une requete qui me relie 3 tables : tache, categorie et surcat .
 
une tache comporte un champ id_cat qui existe également dans la table categorie . Une categorie appartient également à une surcatégorie .
 
ce que je souhaite c'est récupéré toutes les taches qui appartiennent à une catégorie ayant une surcatégorie définnie .
pour l'instant j'ai ca mais ca deconne :
 


//Parcours la table surcat et calcule la somme des durees des taches appartenant a cette surcat
 
$sql2="select * from surcat order by nom asc";
$resu2=mysql_query($sql2);
while($nb2=mysql_fetch_array($resu2))  
{
echo " <strong>$nb2[nom] : </strong> ";
 
$sql3="select sum(tache.duree) as duree , tache.id_cat , categorie.id_cat , surcat ,id_surcat from tache , categorie , surcat where  date_cloture > '$mois-01 00:00:00' and date_cloture < '$mois-31 23:59:59' and affectee<>8 and (tache.id_cat=categorie.id_cat AND categorie.surcat='$nb2[id_surcat]') group by surcat";
$resu3=mysql_query($sql3) or die (mysql_error());
$nb3=mysql_fetch_array($resu3);
$temps=round($nb3[duree]);
$prop=$temps*100/$total;
echo " $temps heures soit <strong>$prop % du total </strong><br>";
 
}


 
 
la somme des durees de la 1ere surcat depasse la duree totale (j'ai l'impression que j'obtiens le double de ce que je devrais avoir) donc ma requete doit etre complement foireuse mais je vois pas trop comment faire...
 
merci de votre aide !


Message édité par kayasax le 17-10-2003 à 11:06:15
mood
Publicité
Posté le 17-10-2003 à 10:56:40  profilanswer
 

n°542243
vttman2
Je suis Open ...
Posté le 17-10-2003 à 12:59:48  profilanswer
 

id_cat jointure entre tache et categorie mais ...
Il te manque la jointure entre categorie et surcat  
à priori ...

n°542287
MagicBuzz
Posté le 17-10-2003 à 13:37:18  profilanswer
 

au lieu de poster ton code PHP (illisble) tu peux pas poster ta requête bien formattée, et avec des retours à la ligne ?


Message édité par MagicBuzz le 17-10-2003 à 13:37:31
n°542646
black_lotu​s
Posté le 17-10-2003 à 21:32:59  profilanswer
 

Bon ben ça donne ça en  + clair...
 
 

Code :
  1. select * from surcat order by nom asc
  2. $nb2 = result

 ok :)  
 

Code :
  1. select sum(tache.duree) as duree ,
  2.        tache.id_cat ,
  3.        categorie.id_cat ,
  4.        surcat ,
  5.        id_surcat
  6. from tache , categorie , surcat
  7. where  date_cloture > '$mois-01 00:00:00'
  8. and date_cloture < '$mois-31 23:59:59'
  9. and affectee<>8
  10. and ( tache.id_cat=categorie.id_cat
  11.      AND categorie.surcat='$nb2[id_surcat]'
  12.     )
  13. group by surcat


là pas OK...
 
pourquoi tu fais le lien sur  

Code :
  1. categorie.surcat='$nb2[id_surcat]'

 
alors que tu as l'air d'avoir un id_surcat plus pratique ???
 

n°542655
black_lotu​s
Posté le 17-10-2003 à 21:39:49  profilanswer
 


 :pfff: je pense vraiment que ça coince là comparer id_surcat à surcat je comprends pas ...

Code :
  1. AND categorie.surcat='$nb2[id_surcat]'


 
  :heink:

n°544678
kayasax
Posté le 20-10-2003 à 11:12:46  profilanswer
 

merci pour votre aide...
faut pas etre choqué, le champs categorie.surcat correspond à surcat.id_surcat (j'ai juste pas nommé les champs pareil) .
 
Bon actuellement j'ai laissé tomber les jointures, je fais 3 requetes imbriquées ( : o )

n°544697
MagicBuzz
Posté le 20-10-2003 à 11:22:00  profilanswer
 

Voilà, normalement, ça donne ça :
 

select sum(tache.duree) as duree, t.id_cat, c.id_cat, c.surcat, c.id_surcat
from tache t, categorie c
where c.surcat = '$nb2[id_surcat]'
and t.id_cat = c.id_cat
and t.date_cloture > '$mois-01 00:00:00'  
and t.date_cloture < '$mois-31 23:59:59'  
and t.affectee <> 8
group by t.id_cat, c.id_cat, c.surcat, c.id_surcat


 
PS: la table surcat est inutile, puisque tu connais l'id_surcat, qui est dans categorie.

n°544886
kayasax
Posté le 20-10-2003 à 13:53:49  profilanswer
 

MagicBuzz a écrit :

Voilà, normalement, ça donne ça :
 

select sum(tache.duree) as duree, t.id_cat, c.id_cat, c.surcat, c.id_surcat
from tache t, categorie c
where c.surcat = '$nb2[id_surcat]'
and t.id_cat = c.id_cat
and t.date_cloture > '$mois-01 00:00:00'  
and t.date_cloture < '$mois-31 23:59:59'  
and t.affectee <> 8
group by t.id_cat, c.id_cat, c.surcat, c.id_surcat


 
PS: la table surcat est inutile, puisque tu connais l'id_surcat, qui est dans categorie.


 
Cool merci !! La table surcat me sert juste à récupérer le nom de la surcat .
Donc mon pb c'etait juste une histoire de group by ??
 
@+

n°545122
MagicBuzz
Posté le 20-10-2003 à 15:22:00  profilanswer
 

je pense oui.
si tu rajoute surcat dans la requête, ajoute une ligne :
 
and s.curcat = c.surcat


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  SQL besoin d'un coup de main sur une requete svp (och).

 

Sujets relatifs
[VC++] ouvrir une requete au lieu d'une table...?<<<RESOLU[ PHP / MySQL ] requête de base ; résultat bizarre ...
MySQL / Free - requête qui marche pas ...[HTML/CSS] Besoin d'avis technique sur mon site presque fini
[Help] Besoin d'aide pour projet intranet[Sql] Buffer overflow
Requête sur les datesRequête sur les dates
J'ai un soucis de PHP ou de SQL avec mon siteURGENT : Besoin d'aide sur les sessions
Plus de sujets relatifs à : SQL besoin d'un coup de main sur une requete svp (och).


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR