|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||||||||||||||||
|
Invité de passage
![]() Inscription : février 2007 Messages : 24 ![]() |
Bonjour à tous,
Je suis actuellement en stage informatique et on me demande de faire un certains nombres de requête afin d'afficher les résultats de transfert de fichier. Le problème est que pour un affichage, j'ai besoin de trois requètes et j'aimerais n'en faire que une, si bien sûr cela est possible. Je travail sur une base Oracle. Dont voici la table. (tout les nom son fictif, mais le principe reste le même) Code :
Pour le statut, zéro signifie que le transfert est réussi (OK), le 1 signifie qu'il a échoué (KO). Code :
Ce que je voudrais, c'est avoir un tableau ou nous verrions le dernier fichier de chaque typefichier, le nombre de fichier tranféré et le nombre de fichier KO. exemple: Code :
Une pour les derniers fichier, une autre pour le nommbre de fichier par typefichier et une troisième pour le nombre de fichier KO. J'aimerais savoir si il ne serait pas possible de pouvoir réduire le nombre de requête. Je ne sais pas du tout si cela est possible. Cela me parait compliquer Voila ce que j'ai fait: -requête pour le dernier fichier par type de fichier: Code :
Code :
Code :
Code :
Code :
Code :
Donc voila je voulais savoir si vous pouviez m'aider à réduire le nombre de requête.En esperant vous avoir donné les informations qu'il fallait tout en étant clair. Je vous remercie d'avance. Cordialement, |
||||||||||||||||||
|
|
00
|
|
|
#2 | ||
|
Membre Expert
![]() ![]() |
Code :
|
||
|
00
|
|
|
#3 | ||
|
Membre Expert
![]() Inscription : avril 2006 Messages : 1 024 ![]() |
Remarques
- Attention tu es en syntaxe MySql, en oracle on n'encadre pas les noms de champs par des cotes mais par des guillemets, le mieux est de ne pas les encadrer du tout et oralce mettra tout en majuscule, ce qui est l'usage. - Evite d'utiliser le nom "date" pour un champ qui est un mot reservé (pour le type "date"). Ce n'est pas interdit mais ça entraine parfois des comportements défaillant de pas mal d'outils (Toad notamment...) Pour la requête, je verais bien un truc comme ça (en renomant le champ "date"): Code :
|
||
|
|
00
|
|
|
#4 |
|
Membre Expert
![]() ![]() |
je ne comprend pas la ligne suivante notamment KEEP:
max(NOMFICHIER) KEEP (DENSE_RANK LAST ORDER BY DATE_FIC) nom_dernier_fichier peux tu me donner des explications ? |
|
00
|
|
|
#5 |
|
Invité de passage
![]() Inscription : février 2007 Messages : 24 ![]() |
Bonjour et merci de vos réponse,
remi4444, j'ai testé ta requete, en réalisant les miodifications, que tu as suggéré et cela marche nickel. Cependant tout comme ylarvor je ne comprend pas la ligne : Code :
max(NOMFICHIER) KEEP (DENSE_RANK LAST ORDER BY DATE_FIC) nom_dernier_fichier Je ne suis également pas bien sûr de comprendre la ligne suivante : Merci beaucoup de l'aide apportée. |
|
|
00
|
|
|
#6 | |
|
Expert Confirmé Sénior
![]() Inscription : juillet 2003 Messages : 3 450 ![]() |
Citation:
__________________
More Code : More Bugs. Less Code : Less Bugs |
|
|
|
00
|
|
|
#7 |
|
Invité de passage
![]() Inscription : février 2007 Messages : 24 ![]() |
Re bonjour, enfait j'ai un petit souci avec la requête, si j'essaye d'afficher l'emetteur et le destinataire (concernant le dernier fichier), la requête ne marche plus. :s
Est-ce normal? Cordialement, |
|
|
00
|
|
|
#8 |
|
Invité de passage
![]() Inscription : février 2007 Messages : 24 ![]() |
Re bonjour, enfait j'ai un petit souci avec la requête, si j'essaye d'afficher l'emetteur et le destinataire (concernant le dernier fichier), la requête ne marche plus. :s
Est-ce normal? De plus pour afficher le dernier fichier tu utilise le champs DATE_FIC. Le problème est qu'il y a également un champs date_heure (que je n'ai pas fait apparaître,car nous avions choisi d'utiliser le champs idtransfert qui est en auto-incrémentation, c'est ainsi plus simple). Cordialement, |
|
|
00
|
|
|
#9 | |
|
Membre Expert
![]() Inscription : avril 2006 Messages : 1 024 ![]() |
Citation:
"MAX (MACHIN) KEEP (DENSE_RANK LAST ORDER BY TRUC)" veux dire que tu affiche le champ MACHIN correspondant à la dernière valeur du champ TRUC classée dans l'ordre, c'est à dire lorsque TRUC a la valeur max. A partir de là, à toi de composer ce que tu veux. |
|
|
|
00
|
|
|
#10 | |||
|
Invité de passage
![]() Inscription : février 2007 Messages : 24 ![]() |
Citation:
J'ai réglé le problème du transfertid, et j'ai compris la ligne max(NOMFICHIER) KEEP....... Mais j'ai toujours le problème, que quand je veut afficher un nouveau champs (par exemple destinataire), la requête en fonctionne plus. Désolé de t'embeter encore une foi :s Code :
|
|||
|
|
00
|
|
|
#11 | ||
|
Membre Expert
![]() Inscription : avril 2006 Messages : 1 024 ![]() |
Normalement, quand une requête "ne fonctionne pas", oracle te renvoi une information pour te préciser ce qui ne fonctionne pas, il faut etre attentif à chacune de ces informations...
Ici je suppose qu'oracle t'indiques que "DESTINATAIRE" n'est pas dans le groupement... Oracle est strict sur ce point, soit tu affiche un champ que tu dois mettre dans le critère de groupement (dans le group-by) soit tu doit utiliser une fonction de groupement (MAX, MIN, SUM, COUNT etc....) Si tu veux, comme pour le nom, avoir le destinataire correspondant à ton dernier fichier, alors fait comme pour le nom.... Code :
|
||
|
|
00
|
|
|
#12 | |
|
Invité de passage
![]() Inscription : février 2007 Messages : 24 ![]() |
Citation:
Merci beaucoup de ton aide, maintenant tout fonctionne nickel. MErci encore et bonne jorunée, Cordialement, |
|
|
|
00
|
|
|
#13 | |
|
Membre Expert
![]() Inscription : avril 2006 Messages : 1 024 ![]() |
Citation:
Ben dit donc, tu n'as pas du t'amuser tous les jour! ![]() Ce logiciel te donne donc l'exemple à ne pas suivre, comme ça, à l'avenir tu aura compris l'importance de toujours prévoir une remontée d'erreur impécable dans toute programmation... |
|
|
|
00
|
|
|
#14 | |
|
Invité de passage
![]() Inscription : février 2007 Messages : 24 ![]() |
Citation:
Je te remercie encore |
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com