|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Candidat au titre de Membre du Club
![]() Inscription : septembre 2009 Messages : 91 ![]() |
Bonjour,
J'ai un problème de requête sur une base oracle, j'y suis depuis plus d'une semaine et j'ai plus d'idées J'ai donc une base de donnée avec 3 tables (MA,ONN et SETUP) tels que : Table MA contient les champs => PROPRIETAIRE(string), CATEGORIE(string),BAC(int), et d'autres champs pas importants. TABLE ONN contient les champs => USERID(string),CONNEXION(date), STATUS(int) et d'autres champs pas importants. TABLE SETUP contient les champs => ID(string), NOM(string), PASSWORD(string) et d'autres champs pas importants. Les champs qui correspondent : USERID = ID PROPRIETAIRE = NOM Je veux donc récupérer l'id, le nom, la dernière date de connexion, la différence entre la date de connexion et SYSDATE, et le status. Le problème est que pour le même ID il y a plusieurs dates de connexion, et aussi plusieurs STATUS donc plusieurs lignes. Je ne veux que la dernière des dates de connexion mais j'obtiens des doublons quand je rajoute STATUS dans mon SELECT. Voici ma requête pour que cela soit plus simple à comprendre (PS:mon distinct ne sert à rien): Code :
Si vous voulez plus de précisions je réponds généralement assez vite. Merci de votre aide parce que la je désespère... |
||
|
|
00
|
|
|
#2 | ||||
|
Membre chevronné
![]() O. JolySupport Inscription : décembre 2010 Messages : 287 ![]() |
tu peux utiliser une fonction d'aggrégation
Code :
Une autre solution (si tu veux le "STATUS") à la dernière connexion est d'utiliser une fonction de ranking Code :
|
||||
|
00
|
|
|
#3 |
|
Expert Confirmé Sénior
![]() ![]() Marius NituIngénieur développement logiciels Inscription : octobre 2007 Messages : 3 311 ![]() |
Utilisez First/Last sous sa forme de fonction d’agrégation : KEEP (DENSE_RANK LAST ORDER BY ...)
|
|
|
10
|
|
|
#4 |
|
Candidat au titre de Membre du Club
![]() Inscription : septembre 2009 Messages : 91 ![]() |
Merci beaucoup, mais j'y suis arrivé en utilisant une requête imbriquée avec MAX et l'utilisation de : HAVING COUNT(champs) >1 ce qui élimine les doublons absolus !
Merci tout de même d'avoir pris le temps de jetter un œil! |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com