Visualizzazione risultati 1 fino 8 di 8

Discussione: si può fare con una query SQL?

  1. #1
    incuso non è connesso Utente
    Data registrazione
    27-09-2003
    Messaggi
    173

    Predefinito si può fare con una query SQL?

    Ho questo problema, ho una tabella che per ogni riga ha due campi numerici che indicano un anno di inizio e un anno di fine, in pratica degli intervalli di tempo.

    Esiste un metodo per cui tramite una semplice chiamata SQL riesco a recuperare direttamente tutti gli anni dei vari intervalli?

    Ad esempio supponendo che la mia tabella contanga solo due righe:


    +--------+---------+
    | inizio | fine |
    +--------+---------+
    | 1966 | 1967 |
    +--------+---------+
    | 1980 | 1984 |
    +--------+---------+


    mi piacerebbe una query che restituisse i seguenti valori 1966,1967,1980.1981,1982,1983,1984

    Sono già riuscito a farlo combinando SQL e PHP ma vorrei migliorare

  2. #2
    Guest

    Predefinito

    Tramite MIN(inizio) e MAX(fine) trovi il valore minimo e massimo dei record (quindi in questo caso 1966 e 1984), poi credo che dovresti usare php.


    ciaooo!!!!!!

  3. #3
    L'avatar di mythologia
    mythologia non è connesso Moderatore
    Data registrazione
    05-01-2004
    Messaggi
    2,614

    Predefinito

    BETWEEN
    Controlla se un valore e’ compreso all’interno di un intervallo di valori, inclusi gli
    estremi.

  4. #4
    ivenuti non è connesso Neofita
    Data registrazione
    05-04-2003
    Messaggi
    18

    Predefinito

    potresti provare a crearti una tabella di appoggio (chiamiamo anniTmp) con tutti gli anni possibili (diciamo da 1950 a 2020?) e poi:

    select anno from anniTmp, anni where anniTmp.anno=anni.inizio or anniTmp.anno=anni.fine order by anno

  5. #5
    L'avatar di mythologia
    mythologia non è connesso Moderatore
    Data registrazione
    05-01-2004
    Messaggi
    2,614

    Predefinito

    In questo modo non ne ricaverebbe nulla
    Ripeto BETWEEN
    Controlla se un valore e’ compreso all’interno di un intervallo di valori, inclusi gli
    estremi.

  6. #6
    incuso non è connesso Utente
    Data registrazione
    27-09-2003
    Messaggi
    173

    Predefinito

    Sì, la tabella di appoggio mi sembra sensata. Non capisco viceversa come potrei usare between. Il mio obbiettivo non è verificare se un valore cade negli intervalli ma estrarre gli intervalli.

    M.

  7. #7
    L'avatar di mythologia
    mythologia non è connesso Moderatore
    Data registrazione
    05-01-2004
    Messaggi
    2,614

    Predefinito

    Appunto,
    (preso da http://canone.ce.unipr.it/MySQLTutor/Manuale/Cap_13.htm)
    Between
    Controlla se un valore è compreso all’interno di un intervallo di valori, inclusi gli estremi.
    Esempio:
    Data la tabella:
    Movimento (Numero, Descrizione, Data, Importo, Codice)
    Elenco dei movimenti con importo compreso tra 100 e 200
    SQL
    Select *
    From Movimento
    Where Importo Between 100 And 200

    e te li seleziona!

  8. #8
    incuso non è connesso Utente
    Data registrazione
    27-09-2003
    Messaggi
    173

    Predefinito

    No, così non funziona. Mi permette di selezionare le righe che contengono valori tra due intervalli. Ma io voglio il contrario: dati gli intervalli come ricavo tutti i valori?

    La tabella di appoggio funziona, ma mi chiedevo se esistesse una soluzione piú elegante.

    M.

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •