bonjour,
j'ai besoin de faire une requête mais je n'y arrive pas, est ce que quelqu'un pourrait m'aider ?
alors voilà :
je tourne sous oracle
j'ai 2 tables :
client et commande
client.code_client=commande.code_client
dans cmmande j'ai un champ date_cmde et un champ etat_cmde (c'est à dire savoir où en est la commande : en cours, validée, etc)
on peut bien sûr avoir plusieurs commandes pour un meme client.
j'ai besoin d'isoler les clients qui ont une commande validée plus récente qu'une commande non validée.
en gros j'ai besoin de faire :
et pour obtenir ces 2 dates, je veux faire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 select code_client... from client where date_cmde_validee>date_cmde_non_validee
mais rownum ne marche pas lorsqu'on fait order by date DESC, car il prend systématiquement la plus ancienne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 -- commande non validée la plus ancienne select date_cmde from commande where rownum<=1 and code_client=code_client de la premiere requete and (etat!=...) --non validée order by date_cmde asc -- commande validée la plus récente select date_cmde from commande where rownum<=1 and code_client=code_client de la premiere requete and (etat=...) --validée order by date_cmde desc
ensuite j'ai besoin d'intégrer ces requetes à la premiere, j'ai essayé plusieurs techniques mais rien ne fonctionne
voilà j'ai mis en commentaire tout ce que j'ai essayé, dans le select, le from et le where.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44 select c.code_client /*(select date_cmde from commande where code_client=c.code_client and (etat=...) --validée order by date_cmde desc) as date_validee, (select date_cmde from commande where code_client=c.code_client and (etat!=...) --non validée order by date_cmde desc) as date_non_validee,*/ from commande c /*(select date_cmde from commande where rownum<=1 and code_client=c.code_client and (etat=...) --validée order by date_cmde desc ) v, (select date_cmde from commande where rownum<=1 and code_client=c.code_client and (etat!=...) --validée order by date_cmde asc ) nv*/ where --v.date_cmde>nv.date_cmde --and date_validee>date_non_validee (select date_cmde from commande where rownum<=1 and code_client=c.code_client and (etat=...) --validée --order by date_cmde desc ) > (select date_cmde from commande where rownum<=1 andcode_client=c.code_client and (etat!=...) --non validée --order by date_cmde asc )
mais rien ne marche, est ce que quelqu'un peut m'aider svp ?
ça me retourne null quand je mets les 2 requetes que j'ai mises plus haut dans le where, alors qu'il y a des cas donc ça devrait m'en retourner.
MERCI
Partager