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

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Besoin d'aide pour une requete SQL

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Besoin d'aide pour une requete SQL

n°375670
les_valseu​ses
Posté le 29-04-2003 à 10:52:03  profilanswer
 

Bonjour,
 
j'explique mon probleme :
 
j'ai 2 tables, T_section et T_conso, j'aimerai faire une requete qui affiche tous les elements (toutes les sections) de T_section ainsi que la somme de tous les champs "tps_passe" de T_conso qui ont pour section T_section
 
 
ex :
si dans T_section j'ai ca :
 
section:
380
381
382
383
 
 
et dans T_conso :
tps_passe :        section :
13.8                382
12.4                382
0.8                 381
0.98                383
456.21              382
 
 
j'aimerai que ca affiche ca :
380           0
381           0.8
382           482.41
383           0.98
 
 
Le probleme c'est que ma requete n'affiche pas la ligne 380 puisque celle ci n'est pas presente dans la table T_conso....comment faire pour lui faire afficher 0???
 
 
Voici ma requete  

Citation :

SELECT C.sect_empl, ARRONDI(sum(C.tps_passe),1) AS J
FROM T_conso AS C, T_section AS S
WHERE S.num_section=C.sect_empl  
GROUP BY C.sect_empl;


Message édité par les_valseuses le 29-04-2003 à 10:53:58
mood
Publicité
Posté le 29-04-2003 à 10:52:03  profilanswer
 

n°375677
Mara's dad
Yes I can !
Posté le 29-04-2003 à 10:54:19  profilanswer
 

LEFT JOIN Powa !
 
C'est quoi ton SGBD ?


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°375682
vttman2
Je suis Open ...
Posté le 29-04-2003 à 10:55:33  profilanswer
 

Tu es sous quoi ?
Oracle, sql server, access ...

n°375687
les_valseu​ses
Posté le 29-04-2003 à 10:58:10  profilanswer
 

Acces.... :(

n°375702
vttman2
Je suis Open ...
Posté le 29-04-2003 à 11:02:33  profilanswer
 

SELECT C.sect_empl, ARRONDI(sum(nz(C.tps_passe,0),1)) AS J
FROM  T_section AS S left join T_conso AS C
on S.num_section=C.sect_empl  
GROUP BY C.sect_empl;

n°375716
les_valseu​ses
Posté le 29-04-2003 à 11:06:58  profilanswer
 

merci, mais ca marche pas, ca m'affiche pas les lignes ou il n'y a aucune resultat..... :(
 
Voici ma requete au complet (y'a des trucs en plus qui ont rien a voir..)
 

Citation :

SELECT C.sect_empl, ARRONDI(sum(nz(C.tps_passe,0)),1) AS J
FROM T_section AS S LEFT JOIN T_conso AS C ON S.num_section=C.sect_empl
WHERE tache Like "903INT*" AND C.mois= (SELECT max(mois) FROM T_conso)
GROUP BY C.sect_empl;

n°375736
vttman2
Je suis Open ...
Posté le 29-04-2003 à 11:13:05  profilanswer
 

vttman2 a écrit :

SELECT C.sect_empl, ARRONDI(sum(nz(C.tps_passe,0),1)) AS J
FROM  T_section AS S left join T_conso AS C
on S.num_section=C.sect_empl  
GROUP BY C.sect_empl;
 


 
ça sera sans doute mieux comme ça ...
 
SELECT T.num_section, ARRONDI(sum(nz(C.tps_passe,0),1)) AS J
FROM  T_section AS S left join T_conso AS C
on S.num_section=C.sect_empl  
GROUP BY T.num_section;


Message édité par vttman2 le 29-04-2003 à 11:15:02
n°375740
les_valseu​ses
Posté le 29-04-2003 à 11:15:23  profilanswer
 

vttman2 a écrit :


 
ça sera sans doute mieux comme ça ...
 
SELECT T.sect_empl, ARRONDI(sum(nz(C.tps_passe,0),1)) AS J
FROM  T_section AS S left join T_conso AS C
on S.num_section=C.sect_empl  
GROUP BY T.sect_empl;


 :pt1cable:  
c'est S et C les préfixes, pas T???

n°375750
vttman2
Je suis Open ...
Posté le 29-04-2003 à 11:17:48  profilanswer
 

Ouhais je suis en plein délire  :pt1cable:  
 
Donc au final :
 
SELECT S.num_section, ARRONDI(sum(nz(C.tps_passe,0),1)) AS J
FROM  T_section AS S left join T_conso AS C
on S.num_section=C.sect_empl  
GROUP BY S.num_section;

n°375754
les_valseu​ses
Posté le 29-04-2003 à 11:18:36  profilanswer
 

j'ai essayé de mettre S.num_section dans le group by au lieu du C.sect_empl mais ca change rien....
 

Citation :

SELECT S.num_section, ARRONDI(sum(nz(C.tps_passe,0)),1) AS J
FROM T_section AS S LEFT JOIN T_conso AS C ON S.num_section=C.sect_empl
WHERE tache Like "903INT*" AND C.mois= (SELECT max(mois) FROM T_conso)
GROUP BY S.num_section;

mood
Publicité
Posté le 29-04-2003 à 11:18:36  profilanswer
 

n°375756
les_valseu​ses
Posté le 29-04-2003 à 11:19:35  profilanswer
 

vttman2 a écrit :

Ouhais je suis en plein délire  :pt1cable:  
 
Donc au final :
 
SELECT S.num_section, ARRONDI(sum(nz(C.tps_passe,0),1)) AS J
FROM  T_section AS S left join T_conso AS C
on S.num_section=C.sect_empl  
GROUP BY S.num_section;
 


ben ca marche pas :D
 
sinon ca sert a quoi nz???
c'est pas plutot nvl qu'il faudrait mettre???

n°375758
les_valseu​ses
Posté le 29-04-2003 à 11:20:52  profilanswer
 

les_valseuses a écrit :


ben ca marche pas :D
 
sinon ca sert a quoi nz???
c'est pas plutot nvl qu'il faudrait mettre???


access connait pas nvl...

n°375768
vttman2
Je suis Open ...
Posté le 29-04-2003 à 11:23:40  profilanswer
 

Kes ki marche pas ?
Kel num section par exemple n'apparait pas ?
 
nz c'est pour mettre 0 si on a une valeur null

n°375773
les_valseu​ses
Posté le 29-04-2003 à 11:26:17  profilanswer
 

vttman2 a écrit :

1)Kes ki marche pas ?
2)Kel num section par exemple n'apparait pas ?
 
3)nz c'est pour mettre 0 si on a une valeur null
 


1) Ben ca n'affiche pas les numéros de sections qui ne sont pas dans la table T_conso
2) Dans mon exemple le 380 ne s'affiche pas vu qu'il n'y a aucun 380 dans la table T_conso, et meme avec le left join ca marche pas...
3) alors le nz c'est l'equivalent du nvl sous oracle...
 
merci qd meme :hello:

n°375802
les_valseu​ses
Posté le 29-04-2003 à 11:41:34  profilanswer
 

j'ai ca :
 
si dans T_section j'ai ca :
 
section:
380
381
382
383
 
 
et dans T_conso :
tps_passe :        section :
13.8                382
12.4                382
0.8                 381
0.98                383
456.21              382
 
 
j'aimerai que ca affiche ca :
380           0
381           0.8
382           482.41
383           0.98
 
 
mais ca m'affiche ca :
381           0.8
382           482.41
383           0.98
 
 
Help !!!! :( :( :(

n°375875
vttman2
Je suis Open ...
Posté le 29-04-2003 à 12:33:00  profilanswer
 

SELECT S.num_section, sum(nz(C.tps_passe,0))
FROM  T_section AS S left join T_conso AS C
on S.num_section=C.sect_empl  
GROUP BY S.num_section;
 
Moi ça me donne ça , avec ton jeu d'essai  :sweat:  
 
 
 
num_section Expr1001
380 0
381 0,8
382 482,41
383 0,98
 


Message édité par vttman2 le 29-04-2003 à 12:33:42
n°375879
PatBasi
Posté le 29-04-2003 à 12:42:30  profilanswer
 

SELECT T_section.num_section, Sum(Nz([tps_passe])) AS J
FROM T_section LEFT JOIN T_conso ON T_section.num_section = T_conso.sect_empl
GROUP BY T_section.num_section;
 
Pareil testé chez moi sous access97 et ca me donne
 

Code :
  1. num_section   J
  2. 380           0
  3. 381           0,8
  4. 382         482,41
  5. 383           0,98

n°375897
les_valseu​ses
Posté le 29-04-2003 à 13:22:57  profilanswer
 

patbasi a écrit :

SELECT T_section.num_section, Sum(Nz([tps_passe])) AS J
FROM T_section LEFT JOIN T_conso ON T_section.num_section = T_conso.sect_empl
GROUP BY T_section.num_section;
 
Pareil testé chez moi sous access97 et ca me donne
 

Code :
  1. num_section   J
  2. 380           0
  3. 381           0,8
  4. 382         482,41
  5. 383           0,98




 
Chez moi ca marche pas....
 
ca pourrait pas venir de mon WHERE?????
 

Citation :

SELECT [T_section].[num_section], ARRONDI(Sum(Nz([tps_passe])),1) AS J
FROM T_section LEFT JOIN T_conso ON [T_section].[num_section]=[T_conso].[sect_empl]
WHERE tache Like "903INT*" AND T_conso.mois= (SELECT max(mois) FROM T_conso)
GROUP BY [T_section].[num_section];

n°375902
PatBasi
Posté le 29-04-2003 à 13:28:26  profilanswer
 

les_valseuses a écrit :


 
Chez moi ca marche pas....
 
ca pourrait pas venir de mon WHERE?????


 
Fais par étape: essaie sans le were et si ca marche, ensuite seulement regarde avec le where

n°375903
Mara's dad
Yes I can !
Posté le 29-04-2003 à 13:28:29  profilanswer
 

Y'a des chances !
 
SELECT [T_section].[num_section], ARRONDI(Sum(Nz([tps_passe])),1) AS J  
FROM T_section LEFT JOIN T_conso ON [T_section].[num_section]=[T_conso].[sect_empl]  
WHERE ( tache Like "903INT*" AND T_conso.mois= (SELECT max(mois) FROM T_conso) )  OR T_conso.mois IS null
GROUP BY [T_section].[num_section];  
 
Un truc dans le genre...


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°375913
les_valseu​ses
Posté le 29-04-2003 à 13:34:32  profilanswer
 

patbasi a écrit :


 
Fais par étape: essaie sans le were et si ca marche, ensuite seulement regarde avec le where


je peux pas :(
j'ai une base de 1600 enregistrements et si je vire le where j'ai des resultats pour chaque section...
 
 
 
Sinon le mois n'est jamais null donc je ne pense pas que ca vienne de la....

n°375919
Mara's dad
Yes I can !
Posté le 29-04-2003 à 13:36:56  profilanswer
 

les_valseuses a écrit :


Sinon le mois n'est jamais null donc je ne pense pas que ca vienne de la....


 
Et si !
 
Il EST NULL pour les enregs qui n'ont pas de correspondance !
 
Sinon, tu n'aurais pas à utiliser de LEFT JOIN...


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°375941
les_valseu​ses
Posté le 29-04-2003 à 13:43:58  profilanswer
 

Mara's dad a écrit :


 
Et si !
 
Il EST NULL pour les enregs qui n'ont pas de correspondance !
 
Sinon, tu n'aurais pas à utiliser de LEFT JOIN...


Ok, je vais essayer, sinon j'ai essayé de faire une requete qui renvoie les resultats correspondant au WHERE :
 

Citation :

SELECT [T_conso].[idconso], [T_conso].[code_empl], [T_conso].[nom], [T_conso].[sect_empl], [T_conso].[tache], [T_conso].[mois], [T_conso].[tps_passe], [T_conso].[lib_tache], [T_conso].[sect_maitre], [T_conso].[statut], [T_conso].[cdact]
FROM T_conso
WHERE ((([T_conso].[tache]) Like "903INT*" ) AND  T_conso.mois= (SELECT max(mois) FROM T_conso));


 
 
et ensuite de baser ma requete le dessus :
 

Citation :

SELECT C.sect_empl, ARRONDI(sum(C.tps_passe),1) AS J, S.resp
FROM R_conso_comme_903int_mois AS C, T_section AS S
GROUP BY C.sect_empl, S.resp;


 
mais ca ne marche toujours pas (ca m'affiche pas les lignes qui n'ont pas de resultat...)
 
Bon, je teste le coup du mois isnull et je reviens :hello:

n°375959
les_valseu​ses
Posté le 29-04-2003 à 13:48:26  profilanswer
 

bon, deja je viens de me rendre compte qu'au dessus j'ai pas mis la bonne requete et sinon le mois is null ne marche pas non plus :(.....

n°375975
les_valseu​ses
Posté le 29-04-2003 à 13:50:30  profilanswer
 

avec la bonne requete ca marche, mais il ne veut pas de ma fonction ARRONDI... :fou:

n°376000
Mara's dad
Yes I can !
Posté le 29-04-2003 à 13:55:22  profilanswer
 

les_valseuses a écrit :

avec la bonne requete ca marche, mais il ne veut pas de ma fonction ARRONDI... :fou:  


 
Yes, en SQL, il faut mettre les noms de fonction en Anglais.


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°376018
les_valseu​ses
Posté le 29-04-2003 à 13:59:53  profilanswer
 

Mara's dad a écrit :


 
Yes, en SQL, il faut mettre les noms de fonction en Anglais.

nan, c'est une fonction a moi ca, elle marche ailleurs, mais j'ai compris pkoa la elle marchait pas :
 
j'ai copier/coller le code vttman2 :
 

Citation :

SELECT S.num_section, ARRONDI(sum(nz(C.tps_passe,0),1)) AS J  
FROM  T_section AS S left join T_conso AS C  
on S.num_section=C.sect_empl    
GROUP BY S.num_section;  


 
et y'avait un pb de parenthese ds l'arrondi...
 
par contre j'ai une autre couille : qd j'execute la requete ca marche, par contre ds l'etat associé a la requete il me demande la valeur de marequete.sect_empl........

n°376049
les_valseu​ses
Posté le 29-04-2003 à 14:11:17  profilanswer
 

Alors la vraiment y'a un truc que je comprends pas....
 
Voici ma sous requete :
 

Citation :

SELECT [T_conso].[idconso], [T_conso].[code_empl], [T_conso].[nom], [T_conso].[sect_empl], [T_conso].[tache], [T_conso].[mois], [T_conso].[tps_passe], [T_conso].[lib_tache], [T_conso].[sect_maitre], [T_conso].[statut], [T_conso].[cdact]
FROM T_conso
WHERE ((([T_conso].[tache]) Like "903INT*" ) AND  T_conso.mois= (SELECT max(mois) FROM T_conso));


 
 
Voici ma requete :
 

Citation :

SELECT S.num_section, ARRONDI(sum(nz(C.tps_passe,0)),1) AS J
FROM T_section AS S LEFT JOIN R_conso_comme_903int_mois AS C ON S.num_section=C.sect_empl
GROUP BY S.num_section;


 
Si je lance la requete comme ca, ca marche!!!
 
et mon etat basé sur cette requete plus 5 autres comme celles au dessus, lui me demande la valeur de marequete.sect_empl!!!!
 
Pourquoi il me le demande la alors que ca marche niquel sinon????

mood
Publicité
Posté le   profilanswer
 


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

  Besoin d'aide pour une requete SQL

 

Sujets relatifs
Requête SQL avec un paramètre contenant ' " ' !!![Access]Requete pas simple.....
Aide en JS/DHTMLbesoin d'aide pour resolution d'erreur sous visual c++
apache/mod ssl besoin d'aide sous win32 ?Utiliser une variable dans une requête SQL
Erreur d'execution 94 avec MS VB ==> besoin aide requete SQL[SQL][Oracle]Besoin d'aide pour une requête!
[SQL] Besoin d'aide pour céer un requete[SQL Server] besoin d'aide pour requete de maj
Plus de sujets relatifs à : Besoin d'aide pour une requete SQL


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