Supponete che un visitatore desideri trovare tutte le notizie create da un autore rientranti in un preciso arco temporale. Per fare ciò avrei bisogno di un form con 3 tag input:
- nome dell'autore;
- data di inizio;
- data di fine.
Supponete ora che il visitatore voglia trovare tutti le notizie di un autore. In questo secondo caso il discorso è ancora più semplice perché avrei bisogno di un form con 1 solo tag.
Supponete infine di voler cercare tutte le notizie in un preciso arco temporale, indistintamente da coloro che le hanno create.
Se faceste due conti con un form di 3 soli tag si dovrebbero scrivere come minimo 3 query ma in realtà se analizzaste bene il problema si potrebbero ottenere, senza grosso sforzo, molte più casistiche.
Se poi il form invece di 3 tag ne avesse molti di più il problema si complicherebbe enormemente. Da qui nasce la mia esigenza di scrivere una query '
variabile', perdonate il mio linguaggio poco tecnico ma credo che il discorso si capisca.
Come posso scrivere in PostgreSQL una query di ricerca per questa tabella?
CREATE TABLE IF NOT EXISTS notizie (
id BIGSERIAL NOT NULL,
id_utente BIGINT NOT NULL,
titolo VARCHAR(150) NOT NULL,
descrizione TEXT NOT NULL,
luogo VARCHAR(100) NOT NULL,
data TIMESTAMP WITH TIME ZONE NOT NULL,
stato VARCHAR(100) NOT NULL,
dettagli TEXT NOT NULL,
CONSTRAINT notizie_fka_utenti FOREIGN KEY (id_utente) REFERENCES utenti (id) ON DELETE CASCADE,
CONSTRAINT notizie_uk UNIQUE (titolo, descrizione, luogo, data),
CONSTRAINT notizie_pk PRIMARY KEY(id)
);
Mi basta solo un pezzo di codice che illustri l'approccio, poi io mi aggiusto a scrivere il resto.
In pratica vorrei scrivere una query in jdbcTemplate che funzioni sia quando l'utente ha deciso di fare una ricerca per titolo che per luogo, ecc...
Grazie anticipatamente