Besoin d'aide pour une requete SQL - SQL/NoSQL - Programmation
Marsh Posté le 29-04-2003 à 10:54:19
LEFT JOIN Powa !
C'est quoi ton SGBD ?
Marsh Posté le 29-04-2003 à 11:02:33
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;
Marsh Posté le 29-04-2003 à 11:06:58
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 |
Marsh Posté le 29-04-2003 à 11:13:05
vttman2 a écrit : SELECT C.sect_empl, ARRONDI(sum(nz(C.tps_passe,0),1)) AS J |
ç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;
Marsh Posté le 29-04-2003 à 11:15:23
vttman2 a écrit : |
c'est S et C les préfixes, pas T???
Marsh Posté le 29-04-2003 à 11:17:48
Ouhais je suis en plein délire
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;
Marsh Posté le 29-04-2003 à 11:18:36
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 |
Marsh Posté le 29-04-2003 à 11:19:35
vttman2 a écrit : Ouhais je suis en plein délire |
ben ca marche pas
sinon ca sert a quoi nz???
c'est pas plutot nvl qu'il faudrait mettre???
Marsh Posté le 29-04-2003 à 11:20:52
les_valseuses a écrit : |
access connait pas nvl...
Marsh Posté le 29-04-2003 à 11:23:40
Kes ki marche pas ?
Kel num section par exemple n'apparait pas ?
nz c'est pour mettre 0 si on a une valeur null
Marsh Posté le 29-04-2003 à 11:26:17
vttman2 a écrit : 1)Kes ki marche pas ? |
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
Marsh Posté le 29-04-2003 à 11:41:34
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 !!!!
Marsh Posté le 29-04-2003 à 12:33:00
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
num_section Expr1001
380 0
381 0,8
382 482,41
383 0,98
Marsh Posté le 29-04-2003 à 12:42:30
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 :
|
Marsh Posté le 29-04-2003 à 13:22:57
patbasi a écrit : SELECT T_section.num_section, Sum(Nz([tps_passe])) AS J
|
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 |
Marsh Posté le 29-04-2003 à 13:28:26
les_valseuses a écrit : |
Fais par étape: essaie sans le were et si ca marche, ensuite seulement regarde avec le where
Marsh Posté le 29-04-2003 à 13:28:29
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...
Marsh Posté le 29-04-2003 à 13:34:32
patbasi a écrit : |
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....
Marsh Posté le 29-04-2003 à 13:36:56
les_valseuses 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...
Marsh Posté le 29-04-2003 à 13:43:58
Mara's dad a écrit : |
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] |
et ensuite de baser ma requete le dessus :
Citation : SELECT C.sect_empl, ARRONDI(sum(C.tps_passe),1) AS J, 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
Marsh Posté le 29-04-2003 à 13:48:26
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 .....
Marsh Posté le 29-04-2003 à 13:50:30
avec la bonne requete ca marche, mais il ne veut pas de ma fonction ARRONDI...
Marsh Posté le 29-04-2003 à 13:55:22
les_valseuses a écrit : avec la bonne requete ca marche, mais il ne veut pas de ma fonction ARRONDI... |
Yes, en SQL, il faut mettre les noms de fonction en Anglais.
Marsh Posté le 29-04-2003 à 13:59:53
Mara's dad a écrit : |
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 |
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........
Marsh Posté le 29-04-2003 à 14:11:17
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] |
Voici ma requete :
Citation : SELECT S.num_section, ARRONDI(sum(nz(C.tps_passe,0)),1) AS J |
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????
Marsh Posté le 29-04-2003 à 10:52:03
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
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