Re: [postgresql-it] hit di ricerca
- From: Daniele Varrazzo <piro@xxxxxxxxxxx>
- To: postgresql-it <postgresql-it@xxxxxxxxxxxxx>
- Date: Wed, 10 Jun 2009 10:43:44 +0200
On Wed, 10 Jun 2009 08:58:01 +0200, Luca Ferrari <fluca1978@xxxxxxxxxxx>
wrote:
Ciao a tutti,
ho bisogno di mantenere le informazioni circa le hit di ricerca di una
anagrafica articoli, quindi diciamo che la mia tabella ha i campi
(id_elemento, hit)
dove il primo rappresenta la chiave e il secondo il contatore di quando
l'elemento risulta da una ricerca. Attualmente io ho implementato la
logica
di
aggiornamento dell'hit nel programma, e quindi prima faccio la mia
ricerca
(SELECT....) costruita dinamicamente e poi faccio un UPDATE su tutta la
lista
degli id_elemento che mi sono risultati. Mi domandavao però se esiste un
modo
per fare la cosa via database direttamente. Inizialmente avevo pensato ad
una
rule, ma il fatto è che i dati di un elemento potrebbero essere estratti
anche
per la semplice visualizzazione di anagrafica e non per una ricerca, e io
voglio memorizzare solo l'hit della ricerca. Quindi mi era venuta in
mente
di
fare una stored procedure, ma mi domandavo se esistesse un metodo piu'
elegante per farlo.
Qualche idea o link?
Potresti usare qualcosa tipo (untested)
UPDATE hit_ricerca
SET hit = hit + 1
FROM anagrafica
-- puoi tirarti dentro altre tabelle mettendole in join...
JOIN altra_tabella ON altra_tabella.emeneto_id = anagrafica.id
-- ...ma il join tra hit e anagrafica devi farlo nel WHERE
WHERE hit_ricerca.id_elemento = anagrafica.id
-- campi di ricerca
AND anagrafica.campo1 = ?
AND altra_tabella.campo2 = ?
AND ... -- altri filtri
RETURNING -- campi da restituire
anagrafica.id,
anagrafica.descrizione,
altra_tabella.campo2,
... -- altri campi da restituire
INSERT...RETURNING è disponibile da PG 8.3.
Potresti usare una rule solo per assicurarti di creare un hit_ricerca
inizializzato a 0 per ogni record di anagrafica che aggiungi (e un
constraint ON DELETE CASCADE per sbarazzartene).
--
Daniele Varrazzo - Develer S.r.l.
http://www.develer.com
Other related posts:
- » Re: [postgresql-it] hit di ricerca - Daniele Varrazzo