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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 SELECT DISTINCT MA.PROPRIETAIRE, ONN.USERID, TO_CHAR(MAX(ONN.CONNEXION), 'dd/mm/yyyy') AS LAST_CONNEXION, TO_DATE(SYSDATE) - TO_DATE(TO_CHAR(MAX(ONN.CONNEXION))) AS DIFFERENCE, STATUS FROM MA INNER JOIN SETUP ON MA.PROPRIETAIRE= SETUP.NOM INNER JOIN ONN ON ONN.USERID = SETUP.ID WHERE CATEGORIE='CHEF' AND SETUP.ID != 'JPL43' AND BAC = 0 GROUP BY MA.PROPRIETAIRE, ONN.USERID, STATUS ORDER BY PROPRIETAIRE ASC
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...![]()
Partager