estrarre data maggiore

Ho una tabella composta da ID-IDcliente-scadenza_certificato

adesso nel database ho 3 record

ID--IDcliente---scadenza_certificato

1 --   1         ---      2007-10-28

2 --   1         ---      2007-11-06

3 --   2         ---      2007-11-12

Supponiamo che oggi sia il 10-11-2007 mi devo tirare fuori le righe

(2--1---2007-11-06)

(3--4---2007-11-12)

Ho fatto in questo modo

SELECT max(scadenza_certificato)AS maggiore FROM certificato WHERE scadenza_certificato <= NOW() + interval 2 day GROUP by idcliente

Ma in questo modo non va come vorrei io

se oggi fosse stato 03-11-2007

lui mi restitusce il record :

1--1---2007-10-28

invece avrei voluto nessuna risposta

Io vorrei che se il cliente ha portato due certificati lui deve prendere quello con la data maggiore

per ovviare potrei togliere il minore in modo che se la data odierna aumentata di due è uguale a quella del database me la seleziona

SELECT max(scadenza_certificato)AS maggiore FROM certificato WHERE scadenza_certificato = NOW() + interval 2 day GROUP by idcliente

ma devo fare in modo che mi tira fuori anche quelle passate però (se ho 2 certificati di uno stesso cliente)  solo quelle con la data maggiore

 :bye:

inviato 9 anni fa
leoneweb
X 0 X

versione MySQL?

risposto 9 anni fa
Gianni Tomasicchio
X 0 X

utilizzo il WAMP5 Version 1.6.3

 :bye:

risposto 9 anni fa
leoneweb
X 0 X

utilizzo il WAMP5 Version 1.6.3

 :bye:

non mi hai mica risposto... ti ho chiesto la versione di MySQL per sapere se supporta le sub select, ovverol e select annidate. Se sono supportate potresti prima estrarre gli ultimi certificati degli utenti e poi prendere quelli in scadenza

 :bye:

risposto 9 anni fa
Gianni Tomasicchio
X 0 X

pardon

MySQL - 5.0.21

le dovrebbe supportare in quanto altre volte le ho fatte e funzionano

 :bye:

risposto 9 anni fa
leoneweb
X 0 X

perfetto, prova a seguire il suggerimento che ti ho datto: SELECT interna estrae tutte le ultime scadenze degli utenti e SELECT esterna prende quelle che che scadono in questi giorni

 :bye:

risposto 9 anni fa
Gianni Tomasicchio
X 0 X

Ho delle date scadenza dove un cliente ne può avere 2 o più

adesso mi devo estrarre la data max di scadenza (tra tante che ne può avere) del cliente  e poi confrontarla con la data odierna aumentata di 2

SELECT max(scadenza_certificato)AS maggiore FROM(SELECT scadenza_certificato FROM certificato WHERE scadenza_certificato <= NOW() + interval 2 day GROUP by idcausa)as certificato

ma non va

 :bye:

risposto 9 anni fa
leoneweb
X 0 X

devi invertire le select, quella interna cerca la scadenza maggiore per ciascun cliente mentre quella esterna prende solo quelle che scadono in questi giorni

 :bye:

risposto 9 anni fa
Gianni Tomasicchio
X 0 X

Ma usare between non andava bene?

SELECT max(scadenza_certificato)AS maggiore FROM certificato WHERE scadenza_certificato between NOW() and NOW() + interval 2 day GROUP by idcliente

risposto 9 anni fa
LonelyWolf
X 0 X

No il between non va bene xchè prende solo la data compresa

SELECT scadenza_certificato FROM certificato WHERE scadenza_certificato <= NOW() + interval 2 day(SELECT max(scadenza_certificato)AS maggiore  FROM certificato GROUP by idcliente)

Ho provato ma non va

 :bye:

risposto 9 anni fa
leoneweb
modificato 9 anni fa
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda