SELECT
pz.cognome AS Cognome,
(select s.presa_in_carico_data from tbl_progetto s where s.is_progetto = 1 AND
s.cc_id_fk = cc.cc_id) as Start,
(select e.presa_in_carico_data from tbl_progetto e where e.is_dimissione = 1 AND
e.cc_id_fk = cc.cc_id) as End,
trf.trf_note AS "Tipo trattam.",
trf.trf_prezzou as Retta,
COUNT(tra.trt_id) AS "N.GG." /*<-- conteggio (numero giorni) */
FROM
tbl_progetto p
JOIN tbl_cartellaclinica cc ON cc.cc_id = p.cc_id_fk
JOIN tbl_paziente pz ON pz.id = cc.pz_fk_id
JOIN tbl_distretti_sanitari di ON pz.distretto_appartenenza = di.dss_id
JOIN tbl_trattamenti tra ON p.pr_id = tra.pr_fk_id
WHERE
tra.trt_data BETWEEN '2012-08-01' AND '2012-08-31' AND
p.pr_faseriab_fk = 4
GROUP BY cc_id
…oltre il "COUNT(tra.trt_id) AS "N.GG." /*<-- conteggio (numero giorni) */"
vorrei ricavare un secondo conteggio ma calcolato sul range di date
DAL (presa_in_carico_data where is_progetto=1) A (l’alias “End”)
Per avere la disponibilita’ nella query dei valori start e end li devi estrarre con una join e non con una subquery.
SELECT
pz.cognome AS Cognome,s.presa_in_carico_data as Start, e.presa_in_carico_data as End,
trf.trf_note AS "Tipo trattam.",
trf.trf_prezzou as Retta,
COUNT(tra.trt_id) AS "N.GG." /*<-- conteggio (numero giorni) */
COUNT(tra2.trt_id) AS "N.GG." /*<-- conteggio (numero giorni tra le date) */
FROM
tbl_progetto p
JOIN tbl_progetto s where s.is_progetto = 1 AND s.cc_id_fk = cc.cc_id
JOIN tbl_progetto e where s.is_dimissione = 1 AND s.cc_id_fk = cc.cc_id
JOIN tbl_cartellaclinica cc ON cc.cc_id = p.cc_id_fk
JOIN tbl_paziente pz ON pz.id = cc.pz_fk_id
JOIN tbl_distretti_sanitari di ON pz.distretto_appartenenza = di.dss_id
JOIN tbl_trattamenti tra ON p.pr_id = tra.pr_fk_id
JOIN tbl_trattamenti tra2 ON (p.pr_id = tra.pr_fk_id)
WHERE
tra.trt_data BETWEEN '2012-08-01' AND '2012-08-31' AND
p.pr_faseriab_fk = 4
tra2.trt_data BETWEEN s.presa_in_carico_data AND e.presa_in_carico_data AND
p.pr_faseriab_fk = 4
GROUP BY cc_id
Questo approccio "eroico’ alle query secondo me e’ da sconsigliare, ti conviene fare delle relationship tra i modelli e poi usare il parametro with del CDbCriteria per fare la query assieme.
Questa stessa query si potrebbe fare usando i modelli e le relations, basta aver fede e pazienza, le relations le puoi riutilizzare, l’sql “epico” no
Ciao @zaccaria, grazie x il reply, purtroppo non credo potrò fare uso di + query, la mia situazione è questa, dovrei usare i dati ricavati per esportarli in formato excel, l’estensione, tra i suoi parametri, si aspetta in ingresso un oggetto dataPorvider (io uso l’sqlDataProvider) con query annessa… non saprei come uniformare + di una query in un unico oggetto dataProvider …
Ti consiglio di usare un’altra libreri per excel o di aprire quella che usi per estenderla.
Quando mi sono trovato io a fare le esportazioni scrivevo delle funzioni di livello piu’ basso indicando in quali celle mettere cosa, in questa maniera puoi gestire la cosa piu’ precisamente:
Devo prendere più dimestichezza con le relations … le uso per relazioni semplici ma per quelle complesse non ho voluto azzardare … poi la fretta si sà è cattiva consigliera …
Grazie però provo subito la query e vi aggiorno
N.B.
…posso pubblicare un altro post x un altra query (complessa x me) ?