sto sviluppando un progetto d'esame in php + postgreSQL.
Come ambito di studio abbiamo sviluppato un applicativo in php per la gestione di una palestra.
Nel database ho le relazioni:
-scheda, un elenco di esercizi da assegnare ad un utente
-assegnata, una relazione che tiene traccia delle schede assegnate ai vari utenti

il relativo SQL di assegnata è questo

CREATE TABLE assegnata(
numero_tessera INTEGER NOT NULL,
matricola_preparatore INTEGER NOT NULL,
codice_scheda INTEGER NOT NULL,
data_assegnamento DATE,
data_cambio DATE,
PRIMARY KEY(numero_tessera, codice_scheda, data_assegnamento),
FOREIGN KEY (numero_tessera) REFERENCES tessera(numero_tessera)
ON UPDATE CASCADE ON DELETE CASCADE,
FOREIGN KEY (matricola_preparatore) REFERENCES preparatore(matricola_preparatore)
ON UPDATE CASCADE ON DELETE CASCADE,
FOREIGN KEY (codice_scheda) REFERENCES scheda(codice_scheda)
ON UPDATE CASCADE ON DELETE CASCADE,
CHECK (data_assegnamento<data_cambio)
)

la chiave primaria l'ho creata in quella maniera per tenere traccia delle schede assegnate nel tempo agli utenti, così che si potessero vedere schede assegnate anche più di una volta allo stesso utente in date diverse.

il problema è questo, devo trovare le schede nn + valide e nel caso ce ne fossero assegnarne altre all'utente. Quindi, per ogni utente dovrei trovare la più recente data_cambio e nel caso fosse minore di oggi (tradotto: la scheda nn è più valida) effettuarne la sostituzione

come soluzione avevo pensato a questa



SELECT MAX(data_cambio) AS cambio, numero_tessera AS tess
FROM assegnata
GROUP BY tess
HAVING cambio < (
SELECT date 'today'
)





ma Postgresql mi da errore sul cambio dopo l'having..... qualcuno mi potrebbe dare un suggerimento? tnx in anticipo a tutti