|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Inscription : mars 2011 Messages : 2 ![]() |
Bonjour, Étant débutant sur SQL, Je dois effectuer une modification sur une requête existante mais étant donné mon inexpérience, ça fait 3 jours que je suis là dessus et je ne vois pas comment faire pour résoudre mon problème...
Cette requête est utilisée pour sortir le résultat (détail financier) de chaque compte. Sauf que la modification à apporter est de rajouter un champ au niveau détail toujours mais qui doit contenir le nombre de jours selon lequel si le solde du compte est dans le négatif depuis environs 1 semaine, je devrai afficher "7" jours. L'information du solde est dans la table BPSA.v_taccount_balance_histExt (table déjà utilisée pour sortir le détail des comptes). Donc en réalité, avant d'afficher le record d'un compte (l'information détail) je devrais aller lire la même table que je lis présentement et que si le solde du compte est négatif (en date d'aujourd'hui par exemple), je dois lire chaque records précédent (hier, avant hier etc...) pour déterminer depuis combien de jour ce compte a un solde négatif ... Si quelqu'un pourrait me donner un peu d'information sur comment faire ça, ça serait très aimable car honnêtement, je ne sais même pas par quoi commencer ... Merci Beaucoup. Exemple de la requête ... Code :
|
||
|
|
00
|
|
|
#2 | ||
|
Membre éprouvé
![]() Inscription : janvier 2009 Messages : 301 ![]() |
Bonjour,
Ta requête est illisible. Je n'ai pas la compétence pour t'aider dans une requête aussi complexe, mais il me semble que si tu veux des réponses, il est nécessaire :
Bon, j'ai décidé de mettre en forme lisible ta requête Code :
Il serait bon de vérifier si le modèle fourni est exact. A+ |
||
|
|
00
|
|
|
#3 | ||
![]() ![]() |
Le premier WHERE est dans la sous-requête complexe qui commence juste après le FROM et qui finit juste avant son alias TOP1. Le second WHERE est pour la requête principale.
Mais effectivement, c'est difficile d'analyser une requête aussi complexe. J'ai moi aussi remis en forme la requête : Code :
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
||
|
00
|
|
|
#4 |
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
Bonjour
Effectivement, pas facile à comprendre tous les liens, et modifier la requête en elle même, mais si tu es dessus depuis 3 jours, je pense qu'une piste te suffira pour l'adapter : Ne va pas chercher le jour précédent, puis le jour d'avant... Va chercher (si le solde du jour est négatif), le max(JOUR), inférieur à la date du jour, pour lequel le solde est positif, et fais la différence avec la date du jour. ou pour reformuler : Si le solde est négatif, va chercher à quelle date il a été positif pour la dernière fois, et compte le nombre de jours entre les deux dates Sur le principe Code SQL : SELECT ..., CASE WHEN Solde >= 0 THEN 0 ELSE SELECT DATEDIFF(DAY,MAX(M.Dateheure), P.DateHeure) FROM MaTable M WHERE Solde >=0 AND M.idDuCompte = P.idDuCompte END FROM ... MaTable P Bon, c'est un peu moche, mais c'est pour illustrer |
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() Inscription : mars 2011 Messages : 2 ![]() |
Je vous remercie énormément pour votre aide .... Je vais prendre vos conseils et essayer de faire quelque chose de bon avec ça ...
Et désolé du "formatage" de la requête ... Je l'avais laissée telle quelle car je pensais que ça serait plus facile a lire (Je suis vraiment débutant) Merci encore et si je réussis a résoudre mon problème, je viendrai afficher la requête. Merci. Steph. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com