Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di ade_v
    Registrato dal
    Jan 2001
    Messaggi
    460

    [MySQL] Problemone con Group By

    Ho una tabella 'ORE' con questi campi

    - ID
    - Data
    - OreLavorate
    - TipoOre

    ed un'altra 'TIPOORE' con questi altri tre campi

    - ID
    - TipoOre
    - Descrizione

    Esempio
    Tabella 'ORE'
    1; 2008-01-01; 8 ; 1.
    2; 2008-01-01; 1 ; 2;

    Ho due record per lo stesso giorno: il primo mi dice che ho lavorato per 8 ore con TipoOre=1 (retribuzione normale); il secondo mi dice che nello stesso giorno ho fatto anche un'ora di straordinario (TipoOre=2)

    Come posso eseguire una query in modo che mi venga un risultato del genere? Ovvero un risultato su di un'unica riga ???
    2008-01-01 - 8 ore - 1 straord.
    ade_v@yahoo.it

    Fletto i muscoli e sono nel vuoto

    Se inviate messaggi privati, avvisatemi sul forum...

  2. #2
    codice:
    SELECT ORE.Data, ORE.OreLavorate, TIPOORE.descrizione
    FROM ORE
    LEFT JOIN TIPOORE ON ORE.TipoOre = TIPOORE.ID

    così ottieni la forma della tabella che ti interessa...poi i raggruppamenti vedi tu
    Administrator of NAMDesign.Net

  3. #3
    Utente di HTML.it L'avatar di ade_v
    Registrato dal
    Jan 2001
    Messaggi
    460
    così era venuto anche a me....

    il problema grosso è che partendo da 2 record aventi stessa data e tipoore diversi devo ottenere un unico record avente la stessa data e ed i due tipi di ore
    ade_v@yahoo.it

    Fletto i muscoli e sono nel vuoto

    Se inviate messaggi privati, avvisatemi sul forum...

  4. #4
    Tu in quel modo li ottieni la forma della tabella che ti interessa...l'unico problema è che hai più righe del necessario probabilmente...quindi se fai:

    codice:
    SELECT ORE.Data, ORE.OreLavorate, TIPOORE.descrizione
    FROM ORE
    LEFT JOIN TIPOORE ON ORE.TipoOre = TIPOORE.ID
    GROUP BY ORE.Data
    dovresti ottenere il risultato che ti serve...nel caso non dovesse andare posta l'output ottenuto
    Administrator of NAMDesign.Net

  5. #5
    Utente di HTML.it L'avatar di ade_v
    Registrato dal
    Jan 2001
    Messaggi
    460
    Questo è l'output

    DATA OreLavorate DescrizioneTipoOre
    2007-12-28 00:00:00 8.00 Normale
    2008-01-01 00:00:00 6.00 Normale
    2008-01-02 00:00:00 8.00 Normale
    2008-01-03 09:00:00 8.00 Normale
    2008-01-03 18:00:00 1.00 Staordinario
    2008-01-04 00:00:00 1.00 Bancaore
    2008-01-07 00:00:00 1.00 ROS
    2008-01-08 09:00:00 8.00 Normale
    2008-01-09 00:00:00 8.00 Normale
    2008-01-10 00:00:00 8.00 Normale
    2008-01-11 00:00:00 9.00 Normale
    2008-01-14 00:00:00 8.00 Normale
    2008-01-15 00:00:00 1.00 Permesso
    2008-01-16 00:00:00 1.00 Bancaore
    2008-01-17 00:00:00 4.00 ROS
    2008-01-18 00:00:00 8.00 Ferie
    2008-01-21 00:00:00 9.00 Normale
    2008-01-22 00:00:00 9.00 Normale
    2008-01-28 00:00:00 8.00 Mutua
    2008-01-29 00:00:00 8.00 Mutua
    2008-01-31 00:00:00 8.00 Ferie

    Prendi per esempio il 3 gennaio: io vorrei un output così:

    DATA Normale Straordinario
    2008-01-03 8 1

    E' possibile ottenerlo ?
    ade_v@yahoo.it

    Fletto i muscoli e sono nel vuoto

    Se inviate messaggi privati, avvisatemi sul forum...

  6. #6
    vedi un po così

    codice:
    SELECT ore1.data, ore1.orelavorate AS normale, ORE2.orelavorate AS straordinario
    FROM ORE AS ORE1, ORE AS ORE2
    WHERE ORE1.data = ORE2.data AND ORE1.tipoore != ORE2.tipoore
    GROUP BY data
    Administrator of NAMDesign.Net

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.