Ciao, ammetto tutta la mia ignoranza in materia di query, quindi mi rimetto al verdetto di più competenti di me e vengo al dunque:
Scenario: tabella turni
codice:USERS_SHIFTS id | date | users_id | shift_id 1 2012-01-01 1 2 32 2012-01-01 2 4 94 2012-01-01 3 4 125 2012-01-01 4 1 2 2012-01-02 1 3 33 2012-01-02 2 2 95 2012-01-02 3 1 126 2012-01-02 4 1 3 2012-01-03 1 1 34 2012-01-03 2 1 96 2012-01-03 3 1 etc etc
Da questa (ed altre su cui faccio delle JOIN) vorrei ottenere una tabella con sulle righe gli utenti ed il relativo turno:
Con questa ovviamente tiro fuori tutto quello che mi serve, ma in maniera "ingestibile" (ovvero, come atteso, per ogni utente e per ogni giorno del mese avrò una record). L'ideale sarebbe avere un result-set in cui il record sia composto dall'utente e dal turno per ciascun giorno - ovvero qualcosa del genere:codice:SELECT * FROM users_shifts as u_s, shifts, users WHERE u_s.user_id = users.id AND u_s.shift_id = shifts.id AND MONTH(u_s.date) = 1 ORDER BY users.surname ASC, users.name ASC, u_s.date ASC
etccodice:user_id 2012-01-01 2012-01-02 2012-01-03 ... 1 2 3 1 2 4 2 1
devo usare una temporary table? non l'ho mai fatto e vista la mia scarsa dimestichezza con mysql, mi chiedevo se ci fosse una qualche maniera di ottenere dei record raggruppati per utente senza passare per tabelle temporanee (GROUP BY non mi sembra opportuno in quanto mi ritornerebbe un solo record per utente, ovvero quello corrispondente al primo giorno del mese di turno)

Rispondi quotando