|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre habitué
![]() Inscription : septembre 2007 Messages : 169 ![]() |
Bonjour,
voila pas mal de temps que je butte sur une requête qui me parait pourtant relativement simple... J'ai 3 tables : OBJET, LIVRAISON, et celle qui fait la jointure entre les 2 OBJET_LIVRAISON. Je voudrais récupérer, pour tous les objets de OBJET, la dernière livraison correspondante(par rapport au champ "DATE" de la livraison). Ce qui répondrait à ma requete, et qui ne marche bien entendu pas, serait quelque chose dans ce gout : Code :
|
||
|
|
00
|
|
|
#2 | ||
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
et :
Code :
|
||
|
|
00
|
|
|
#3 | ||||
|
Membre habitué
![]() Inscription : septembre 2007 Messages : 169 ![]() |
Merci de ta réponse, mais c'est pas encore tout à fait ca. Le problème c'est que je n'ai pas LA dernière livraison avec cette requete.
En fait ce que je peux avoir avec ta requete est : Code :
Code :
Enfin je pense il doit pas falloir changer grand chose mais décidément... |
||||
|
|
00
|
|
|
#4 | ||
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
t'as le droit de réfléchir aussi hein
Code :
|
||
|
|
00
|
|
|
#5 |
|
Expert Confirmé Sénior
![]() ![]() ![]() Laurent SchneiderAdministrateur de base de données Inscription : décembre 2005 Messages : 2 927 ![]() |
|
|
00
|
|
|
#6 |
|
Membre habitué
![]() Inscription : septembre 2007 Messages : 169 ![]() |
Oui je sais bien, mais si j'ai posté c'est parce que je ne trouve pas de solution... je cherche depuis hier, mais je dois aborder le problème par le mauvais coté.
Bon tu vas croire que je le fais expres, mais ce n'est toujours pas bon.. J'ai pensé à cette méthode, mais c'est pour cela que j'ai précisé dans mon 1er post que je devais utiliser la date de livraison pour savoir quelle est la dernière livraison, au cas où il y ait une insertion de livraison retardé pour je ne sais quelle raison. Le champ date est plus sur Donc c'est pour ca je ne vois pas comment facilement récupérer l'id de la livraison correspondant au max de la date... En tout cas merci de ton aide. |
|
|
00
|
|
|
#7 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
donne nous les scripts de création des tables et des lignes exemples pour qu'on puisse essayer STP.
Laurent |
|
|
00
|
|
|
#8 | |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
Citation:
|
|
|
|
00
|
|
|
#9 | |||
|
Membre habitué
![]() Inscription : septembre 2007 Messages : 169 ![]() |
Ok, donc voici les 3 tables :
Code :
la livraison 1 livre l'objet 1 et 2 le 27-02-2006 la livraison 2 livre ce meme objet 1 le 12-06-2006 la livraison 3 livre toujours ce meme objet 1 le 10-03-2006 je voudrais avoir comme résultat : Citation:
J'espère que mes propos sont un peu plus clairs, mais s'il reste des zones d'ombre je suis toujours la. |
|||
|
|
00
|
|
|
#10 | ||
|
Expert Confirmé
![]() Chef de projet en SSII Inscription : janvier 2004 Messages : 2 866 ![]() |
Et ça :
Code :
__________________
Un problème sans solution est un problème mal posé Merci de poser vos questions sur le forum, je ne réponds pas aux questions posées par MP. |
||
|
|
00
|
|
|
#11 |
|
Membre habitué
![]() Inscription : septembre 2007 Messages : 169 ![]() |
Hélas plainer ca ne marche pas non plus, vu que je veux pour chaque objet une seule et unique installation correspondante : celle dont la date est la plus grande parmi toutes les livraisons ayant livré cet objet.
|
|
|
00
|
|
|
#12 | ||
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
et ça :
Code :
|
||
|
|
00
|
|
|
#13 |
|
Membre habitué
![]() Inscription : septembre 2007 Messages : 169 ![]() |
Oui le résultat est bon ora, par contre effectivement si 2 livraisons ont la même date, les résultats vont devenir incohérents...
La solution "parfaite" serait de pouvoir récupérer directement le id_livraison correspondant à la max date dans la sous requete, mais pas possible... Encore merci de m'aider à trouver une solution. |
|
|
00
|
|
|
#14 | |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
Citation:
Le modéle ne m'a pas l'air au top |
|
|
|
00
|
|
|
#15 |
|
Expert Confirmé Sénior
![]() ![]() ![]() Laurent SchneiderAdministrateur de base de données Inscription : décembre 2005 Messages : 2 927 ![]() |
1) keep n'est pas une fonction analytique
2) fonctions analytiques en 8i Bon, disons qui si keep n'existe pas, tu peux toujours employer DENSE_RANK |
|
00
|
|
|
#16 |
|
Expert Confirmé Sénior
![]() ![]() ![]() Laurent SchneiderAdministrateur de base de données Inscription : décembre 2005 Messages : 2 927 ![]() |
un exemple tout prêt sorti de la doc 8i avec RANK
TOP_N http://download-west.oracle.com/docs...ysis.htm#22773 |
|
00
|
|
|
#17 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
|
|
|
00
|
|
|
#18 | ||
|
Membre habitué
![]() Inscription : septembre 2007 Messages : 169 ![]() |
Merci laurent, en modifiant l'exemple que tu m'as passé ca m'a l'air tout bon. Enfin ca me rassure un peu quant au fait que je n'arrivais pas à trouver la solution.. ^^
Voila la solution finale : Code :
Edit : encore merci à vous deux, et pour votre rapidité |
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com