[gl-como] Query MySql/Php

Riccardo Penco r.penco@scasinet.com
Ven 16 Feb 2007 10:41:08 CET


Carlo Filippetto ha scritto:
> Alla fine lo farņ col php..
> query normale in cui estraggo tutti i cod_id
> poi li elaboro tirando fiori tutti i valori e li confronto, se ci sono
> doppioni elimino!!
> 
> Fine

Ti consiglio poi di mettere un indice univoco in modo che un eventuale 
tentativo di inserimento di un doppione fallirebbe

> 
> Cmq quello che non avevo capito della tua query era:
> creare un "id" al volo -> cod_id + "_" + date + in + out
> 

non sono sicuro di avere bene inteso il tuo problema e non sono esperto 
di MySQL ma, se supporta le sub-select, penso che la cosa sia fattibile.

qualcosa di simile:

La tua tabella:
id          // valore auto_increment
cod_id      // codice identificativo
in          // valore in ingresso
out         // valore in uscita
data_lett   // data della lettura

la subselect che chiamo T1 contiene i cod_id, in e out raggruppati 
mostrando solo il valore minimo della data di lettura.
Dalla tabella elimino tutti i record con gli stessi valori di cod_id, in 
e out che abbiano un valore diverso per la data_lett rispetto al valore 
minimo.

delete TT
from tabella TT
   inner join
     (select T.cod_id, T.in, T.out, min(data_lett) as DataDaTenere |
      from tabella T                                               |-> T1
      group by T.cod_id, T.in, T.out) T1                           |
   on TT.cod_id = T1.cod_id and TT.in = T1.in and TT.out = T1.out
where TT.data_lett <> T1.DataDaTenere

_OVVIAMENTE_, nel caso tu decidessi di eseguirla, ti consiglio di 
effettuare prima un bel backup del db!!

> 
> CIAO

ciao
riki


Maggiori informazioni sulla lista gl-como