• User

    [SQL] Eliminare doppie occorrenze [Era: Consiglio Urgente A Problema Stupido...]

    Ho una tabella mysql fatta in questo modo:

    ID|ENTRATA|USCITA|CODLISTINO

    1 |2007-01-01|2007-01-31|1
    1 |2007-02-01|2007-02-28|1
    1 |2007-04-01|2007-04-31|3

    Il problema è questo... c'è un modo veloce di fargli trovare la contiguità del codice listino ed elimiare così le righe superflue? Ottenendo nell'esempio

    ID|ENTRATA|USCITA|CODLISTINO

    1 |2007-01-01|2007-02-28|1
    1 |2007-04-01|2007-04-31|3

    Vorrei evitare di prenderli uno alla volta e ciclare su tutto il database... facendo i controlli in php....diventano una infinità di chiamate (ovviamente i valori non sono solo 3 come nell'esempio).

    Che strategia mi consigliate?


  • Super User

    Ciao gringo75,
    modifico il titolo 🙂
    Per la tua richiesta,puoi usare SELECT DISTINCT 😉
    Ciao!


  • User

    Forse non mi sono spiegato... o forse mi sfuggono gli usi del distinct

    Quello che devo eliminare è che se due campi sono contigui nel tempo, diventino un unica riga.

    Es.

    da 1 gennaio a 31 gennaio , listino 1
    da 1 febbraio a 28 febbraio , listino 1

    diventi l'unica riga
    da 1 gennaio a 28 febbraio, listino 1


  • User Attivo

    @gringo75 said:

    Forse non mi sono spiegato... o forse mi sfuggono gli usi del distinct

    Quello che devo eliminare è che se due campi sono contigui nel tempo, diventino un unica riga.

    Es.

    da 1 gennaio a 31 gennaio , listino 1
    da 1 febbraio a 28 febbraio , listino 1

    diventi l'unica riga
    da 1 gennaio a 28 febbraio, listino 1

    Se:

    1. Il campo listino identifica già la contiguità temporale
    2. del campo entrata ti serve il minore
    3. del campo uscita ti serve il maggiore

    SELECT id, min(entrata), max(uscita), codlistino FROM tabella group by id, codlistino


  • User

    Il campo codice listino identifica il listino prezzi da applicare in un certo periodo.
    Io vorrei riunire in una sola riga i periodi contigui che utilizzano lo stesso listino prezzi.