Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Query fra intervalli di timestamp, Interval, between, in, non funzionano

    Salve ragazzi,
    sarà l'ora... ma questa query a prima vista banale non mi riesce.
    Vi faccio capire subito.
    Diciamo che ho questi intervalli
    [CODE]
    PIPPO: 1, 2, 3, 4, 5, 6, 7, 8
    PLUTO: 1, 2, 3, 6, 7, 8
    PAPERINO: 1, 2, 3
    [CODE]
    Ho necessità di trovare chi fra PIPPO, PLUTO, PAPERINO ha l'intervallo compreso e CONSECUTIVO fra 3 e 6
    Dovrebbe venire fuori PIPPO perchè è l'unico ad avere i valori 3, 4, 5, 6 mentre a PLUTO manca il 4 e il 5, mentre a PAPERINO manca il 4, 5, 6

    Ho provato una cosa tipo
    codice:
    SELECT * FROM table WHERE intervallo IN (3,4,5,6)
    Ma ovviamente mi prende sia PLUTO CHE PIPPO CHE PAPERINO....
    Come dovrei fare?
    Un saluto

  2. #2
    Ciao, non sapendo come è strutturata la tabella vado ad intuito, supponendo che table abbia un campo intervallo che può assumenre un solo valore, quindi per PIPPO, PLUTO e PAPERINO hai tanti record quanti sono i valori dell'esempio.
    Premesso ciò, la tua query non può mai funzionare, perchè la clausola IN va a prendere un valore per volta, e quindi non implica che i valori debbano essere tutti presenti, spero diessermi spiegato.

    Per trovare una soluzione, è meglio che posti la struttura della tabella, se non è come ho pensato io.
    CODENCODE \ Branding \ Design \ Marketing
    www.codencode.it

  3. #3
    Esatto, con IN non può mai funzionare e l'ho già verificato.
    La struttura della tabella è esattamente come l'hai pensata tu.
    La riscrivo.
    codice:
    USER | VAL
    pippo | 1
    pippo | 2
    pippo | 3
    pippo | 4
    pippo | 5
    pippo | 6
    pippo | 7
    pippo | 8
    pluto | 1
    pluto | 2
    pluto | 3
    pluto | 7
    pluto | 8
    paperino | 1
    paperino | 2
    paperino | 3
    Perdono non so come rappresentarla al meglio ma ogni USER ha il suo VAL
    Ripeto che il mio problema è, dato un intervallo, trovare chi fra i vari user ha questo intervallo consecutivo.
    Ad esempio dato l'intervallo 3 -> 6 l'unico USER che dovrebbe venir fuori sarebbe pippo.
    Altro caso sarebbe con N intervalli.
    Esempio, dato l'intervallo 1 ->3 e 5 -> 7 che sempre Pippo dovrebbe trovare.
    Scusate ma mi ci sto arrovellando, ho provando anche a concatenare tanti AND ma non mi trova nulla.

  4. #4
    Utente di HTML.it L'avatar di jcsnake
    Registrato dal
    Jun 2010
    Messaggi
    629
    Ciao, purtroppo la funzione che chiedi non esiste in sql, dovresti ovviare al problema con il php. Perchè, come credo tu abbia già provato, tutte le funzioni messe a disposizione da sql come between, in, ecc. controllano solo se il numero è compreso nell'intervallo, non effettuano nessun controllo sui precedenti o successivi.

  5. #5
    A mio avviso con un'unica query non si può fare, qualcuno potrebbe smentirmi, ma ora non mi viene da pensare altro che ricorrere a più query utilizzando php come suggerito da jcsnake.
    CODENCODE \ Branding \ Design \ Marketing
    www.codencode.it

  6. #6
    Ho capito, ecco perchè non trovavo nulla.
    Cmq in php mi basta prendere inizialmente tutti i record compresi fra l'intervallo e dopo scartare quelli che hanno degli eventuali "buchi".
    Vabbè... grazie

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.