Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2009
    Messaggi
    158

    Query intervallo di tempo

    Ciao a tutti,
    Ho una tabella mysql così strutturata:
    id (int)
    ora_rich (int) -> data e ora in formato time() di php
    operatore1 (int) -> id operatore
    operatore2 (int) -> altro id operatore

    Dovrei fare una query che selezioni in un dato mese l'operatore e il numero delle volte in cui compare in uno dei due campi (operatore1, operatore2) ma suddiviso in fasce orarie da 1 ora. Mi spiego meglio: avrò una tabella che dice
    08:00 - 09:00 | nome_operatore(numero servizi), nome operatore2(numero servizi)....ecc
    09:00 - 10:00 | nome_operatore(numero servizi), nome operatore2(numero servizi)....ecc
    Sostanzialmente devo calcolare per ogni giorno del mese quanti servizi ha fatto per ogni fascia oraria, ottenendo un'unica tabella. Conto quante volte compare dalle 8 alle 9 del giorno 1, dalle 8 alle 09 del giorno 2....dalle 8 alle 9 del giorno 31 e poi sommo per scrivere il numero nella cella.
    Riesco ad estrarre il numero con i servizi totali in ogni giorno ma non riesco a fare un'ulteriore suddivisione per fasce.
    Qualcuno saprebbe aiutarmi?
    Grazie

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    1,469
    non so (immagino di sì) se il campo time di php corrisponde all'UNIX_TIMESTAMP, nel qual caso puoi decodificare direttamente con le funzioni mysql.

    Fossi in te, in un caso del genere, memorizzerei però in forma estesa data ed ora per facilitare le selezioni

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2009
    Messaggi
    158
    Si UNIX_TIMESTAMP corrisponde al time() di php. Ma come converto i valori? Avevo pensato semplicemente di trasformare tutte le date in orari ma come si fa? Non trovo nessuna funzione che converte

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    1,469
    Originariamente inviato da patt
    Si UNIX_TIMESTAMP corrisponde al time() di php. Ma come converto i valori? Avevo pensato semplicemente di trasformare tutte le date in orari ma come si fa? Non trovo nessuna funzione che converte
    SELECT FROM_UNIXTIME(UNIX_TIMESTAMP(),'%h:%i:%s');
    ad esempio

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2009
    Messaggi
    158
    Alla fine ho risolto in questo modo, utilizzando UNIX_TIMESTAMP:

    codice:
    "select Operatore, sum(conta) as tot, ora as turno from (SELECT operatore1 as Operatore, count(operatore1) as conta,(FROM_UNIXTIME(ora_ric,'%H')) as ora from t1op_trasporti where ora_ric>=$data1 and ora_ric<=$data2 and operatore1>0 and osp='$osp' group by (FROM_UNIXTIME(ora_ric,'%H')), operatore1    union all   SELECT operatore2 as Operatore, count(operatore2) as conta,(FROM_UNIXTIME(ora_ser2,'%H')) as ora from t1op_trasporti where ora_ser2>=$data1 and ora_ser2<=$data2 and operatore2>0 and osp='$osp' group by (FROM_UNIXTIME(ora_ser2,'%H')), operatore2    union all   SELECT operatore3 as Operatore, count(operatore3) as conta,(FROM_UNIXTIME(ora_ric,'%H')) as ora from t1op_trasporti where ora_ric>=$data1 and ora_ric<=$data2 and operatore3>0 and osp='$osp' and operatore3>0 group by (FROM_UNIXTIME(ora_ric,'%H')), operatore3   union all   SELECT operatore4 as Operatore, count(operatore4) as conta,(FROM_UNIXTIME(ora_ser2,'%H')) as ora from t1op_trasporti where ora_ser2>=$data1 and ora_ser2<=$data2 and operatore4>0 and osp='$osp' and operatore4>0 group by (FROM_UNIXTIME(ora_ser2,'%H')), operatore4 ) as t1 group by turno,Operatore order by turno"
    Questo mi restituisce una riga per ogni orario ogni volta che si verifica un cambio di Operatore.
    Ora però se volessi raggruppare ancora i risultati che hanno come turno un valore compreso fra 0 e 6 e fra 21 e 23 come posso fare? Ho pensato un having ma mi cancellerebbe le altre soluzioni

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.