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

    Query su calendario e giorni compilati

    Tabella ORE
    data_id | utente_id |causale_id| ordin. | straor. | permessi | mutua

    Tabella CALENDARIO
    data | chiusura

    Ora vorrei ottenere una pagina con tutti i giorni del mese (lavorati e no), e le ore fatte per ogni giorno lavorato.

    Ora con questa query ottengo un casino, ripetizioni:

    $sql = "SELECT *
    FROM calendario AS a
    LEFT JOIN ore AS b ON
    (b.utente_id = '$id_cognome' AND MONTH(b.data_id) = '$id_mese' )
    WHERE MONTH(a.data) = '$id_mese'
    ORDER BY a.data";
    Codice PHP:
    a.data         b.data        o s p m
    2005
    -01-01    2005-01-05    1 2 2 2     
    2005
    -01-01    2005-01-06    1 1 5 5     
    2005
    -01-02    2005-01-05    1 2 2 2     
    2005
    -01-02    2005-01-06    1 1 5 5     
    2005
    -01-03    2005-01-05    1 1 5 5     
    2005
    -01-03    2005-01-06    1 2 2 2 
    etc
    ...

    Invece vorrei ottenere

    a
    .data         b.data        o s p m
    2005
    -01-01    -             0 0 0 0     
    2005
    -01-02    -             0 0 0 0     
    2005
    -01-03    -             0 0 0 0     
    2005
    -01-04    -             0 0 0 0     
    2005
    -01-05    2005-01-05    8 2 0 0     
    2005
    -01-06    2005-01-06    4 0 4 0     
    2005
    -01-07    -             0 0 0 0 
    etc
    ... 

    Scusate la lunghezza del post, ma se qualcuno può darmi una mano ne sarei felice.
    grazie

  2. #2
    Utente di HTML.it L'avatar di Teuzzo
    Registrato dal
    Mar 2002
    Messaggi
    969
    Nell'ON del JOIN devi mettere le relazioni tra le due tabelle (quali sono?). Le condizioni le devi mettere nel WHERE.

  3. #3
    dunque, ora riesco a unire i dati delle due tabelle dove hanno la stessa data.

    Così dovrei ottenere una riga per ogni giorno del mese e le ore che sono state fatte se quel giorno è stato di lavoro.

    Se seleziono Gennaio unisce correttamente i dati delle ORE di gennaio.. però continua a stampare tutto il calendario fino a dicembre.

    Es:
    2005-01-01 8 ore
    2005-01-02 8 ore
    2005-01-03 8 ore
    2005-01-04 8 ore
    ...
    2005-01-28 8 ore
    2005-01-29 8 ore
    2005-01-30 8 ore
    2005-01-31 8 ore

    e va bene, poi però continua a stampare i mesi (giustamente senza ore)

    2005-02-01
    2005-02-02
    2005-02-03
    2005-02-04
    2005-02-05
    etc...

    Domanda: Come faccio a far escludere dai risulati gli altri mesi non richiesti?

    Grazie


    Ecco la query:

    Codice PHP:
    $sql =  "SELECT DISTINCT
     a.data, a.chiusura, 
     b.data_id, b.utente_id, b.causale_id, b.ordinarie, b.straordinarie, b.permessi, b.mutua 
        
     FROM calendario AS a 
     LEFT JOIN ore AS b ON (b.data_id = a.data AND MONTH(a.data) = '
    $id_mese' AND MONTH(b.data_id) = '$id_mese' )        

     ORDER  BY a.data"

    1,2,3,4,5,10,100 passi!

  4. #4
    emh... ...ho aggiunto, dopo ON...
    codice:
     WHERE MONTH(a.data) = '$id_mese'
    e funziona...
    1,2,3,4,5,10,100 passi!

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.