|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Inscription : septembre 2011 Messages : 4 ![]() |
Bonjour, je viens vers vous car il semble que mes connaissances en sql atteignent leur limite.
Je vous explique : J'ai une table qui s'appele RELEVE dans laquelle vient se déverser le solde bancaire du jour de près de 200 sociétés. Le but de ma requête est d'obtenir le dernier solde disponible pour chaque société. La requête se présente actuellement comme ça : Code :
P_DATE est un paramètre que je renseigne manuellement. Problème : la requête va chercher le dernier relevé disponible sauf qu'elle ne le fait pas pour toute les sociétés, la recherche s'arrête à la première date disponible. EX : si une société à un relevé au 12/09, la requête cherchera tous les relevés du 12/09, hors certaines sociétés ont leur dernier relevé au 11/09, je souhaiterais donc que la requête aille chercher le dernier relevé disponible pour CHAQUE société. Merci par avance de votre aide parce que la je bloque complètement. |
||
|
|
00
|
|
|
#2 | ||
|
Membre Expert
![]() Responsable de service informatique Inscription : janvier 2009 Messages : 1 092 ![]() |
Bonjour,
Le resultat est normal, vu que tu cherches la dernière date toutes sociétés confondues. Tu peux utiliser une jointure externe: Code SQL :
Petite question: pourquoi utiliser 3 colonnes pour la date, au lieu d'une colonne de type date ? Tatayo. |
||
|
|
00
|
|
|
#3 | |
|
Membre émérite
![]() Olivier DehorterIngenieur de recherche - Ecologue Inscription : juin 2003 Messages : 697 ![]() |
c'est normal, la sous-requête ne fait aucune référence à une société (mais de toute façon le "WHERE = (" générerait alors une erreur.
Citation:
|
|
|
|
00
|
|
|
#4 |
|
Invité de passage
![]() Inscription : septembre 2011 Messages : 4 ![]() |
hé oh doucement les gars (j'ai oublié de préciser que je n’était pas un professionnel du langage sql).
En lisant vos messages mon cerveau à buggé ![]() r1 et r2 connais pas sgbd connais pas En fait je suis salarié d'une société qui à achet" un logiciel de base de données (open executive) la seule formation que j'ai eue c'est la construction de requêtes simples Merci encore |
|
|
00
|
|
|
#5 |
|
Membre Expert
![]() Responsable de service informatique Inscription : janvier 2009 Messages : 1 092 ![]() |
|
|
|
00
|
|
|
#6 |
|
Invité de passage
![]() Inscription : septembre 2011 Messages : 4 ![]() |
Je viens d'essayer ça l'air de fonctionner, je ne voudrais pas te déranger mais si tu peux me faire une mini explication sur la requête que tu viens de me donner ça serait super, je dormirais moins con ce soir
|
|
|
00
|
|
|
#7 |
|
Membre Expert
![]() Responsable de service informatique Inscription : janvier 2009 Messages : 1 092 ![]() |
LJe but est de renvoyer toutes les lignes de RELEVES pour lesquelles il n'existe pas de ligne avec la même société, la même année, le même mois et un jour.
Je suis passé par une jointure externe, je prends toutes les lignes de RELEVES (R1), et si elles existent les lignes ayant la même société, les mêmes années et mois, et un jour supérieur, mais je ne garde que les lignes de R1 pour lesquelles je n'ai rien trouvé dans R2. Donc: le LEFT OUTER JOIN pour renvoyer toutes les lignes de R1, qu'il y ait correspondance ou pas dans R2, et le r2.societe is null pour ne garder que les lignes de résultat où R2 n'a pas été trouvé. Tatayo. P.S. il y a quelques cours de SQL sur ce site, tu devrais y jeter un œil... |
|
|
00
|
|
|
#8 |
|
Invité de passage
![]() Inscription : septembre 2011 Messages : 4 ![]() |
Bonne continuation
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com