query veramente complessa
3 partecipanti
query veramente complessa
Salve siamo otto medici collegati in rete (Associazione MEDIASS) geografica con RRS server dovremmo fare una ricerca per l'Università della Calabria Istituto di Igiene per alcune patologie (sinusite, bronchite) e ci chiedono i seguenti dati: ICD9, nome, cognome, eta, sesso, data visita, diagnosi, data diagnosi, esami colturali, risultato, antibiogramma, molecola prescritta, durata terapia, posologia, eventuale modifica terapia antibiotica, motivazione cambio terapia, nuova terapia, posologia, durata, eventuali comorbilità esito malattia (v.specialistica, ricovero guarigione). Come si vede credo che in una query tutto non ci può stare e qualche dato richiesto non si può estrarre. Avevo delle query utilizzabili ma in sysbase e con postgres non funzionano. Chiedo ai maghi delle query un aiuto per quello che umanamente si può fare. grazie.
nanci giacinto- Membro Junior
- Messaggi : 128
Punti : 5208
Voti per importanza dei messaggi : -1
Data d'iscrizione : 02.03.11
Re: query veramente complessa
nanci giacinto ha scritto:Salve siamo otto medici collegati in rete (Associazione MEDIASS) geografica con RRS server dovremmo fare una ricerca per l'Università della Calabria Istituto di Igiene per alcune patologie (sinusite, bronchite) e ci chiedono i seguenti dati: ICD9, nome, cognome, eta, sesso, data visita, diagnosi, data diagnosi, esami colturali, risultato, antibiogramma, molecola prescritta, durata terapia, posologia, eventuale modifica terapia antibiotica, motivazione cambio terapia, nuova terapia, posologia, durata, eventuali comorbilità esito malattia (v.specialistica, ricovero guarigione). Come si vede credo che in una query tutto non ci può stare e qualche dato richiesto non si può estrarre. Avevo delle query utilizzabili ma in sysbase e con postgres non funzionano. Chiedo ai maghi delle query un aiuto per quello che umanamente si può fare. grazie.
posso solo suggerire una query approssimativa e presuntiva x estrarre le righe compilate relative ad uno specifico problema ( ovviamente in Modalità Problema Obbligatoria ) in un determinato periodo ; il format della query non ottimale ma funzionante in PgAdmin e MU direttamente con Copia e Incolla , spero ):
WITH mmg AS ( SELECT userid , nome FROM v_utenti WHERE codice_regionale ILike '%' ) ,
evento AS ( SELECT codice , addenda As pbl , cp_code As pbl_code , pb_code , data_open As pbl_onset FROM cart_problemi WHERE userid IN ( Select userid From mmg ) AND ( addenda ILIKE '%Sinusite%' OR addenda ILIKE '%Bronchite%' ) AND data_open > Today()-365 ) ,
paz_ssr AS ( SELECT p.codice , p.cognome , p.nome , p.nascita , Cast( Days( p.nascita , Today()+1)*24/8766 As SmallInt ) As eta , Cast( p.sesso As Char(1)) FROM pazienti p LEFT Outer JOIN nos_002 n On p.codice = n.codice WHERE p.codice IN ( Select codice From evento ) And p.pa_convenzione = 'S' And ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or ( n.pa_drevoca Between Date( Today())-365 And Today() And n.motivo_revoca = 'S')) And p.decesso Is Null ) ,
terapia AS ( SELECT codice , data_open As terap_d , co_des As drug , te_npezzi As n_pezzi , po_des As posologia , co_atc As atc , ur_pb_id FROM cart_terap WHERE /* codice IN ( Select codice From paz_ssr) AND */ pb_code IN ( Select pb_code From evento ) AND data_open > Today()-365 ) ,
accert AS ( SELECT a.codice , a.data_open As acc_d , a.ac_des As acc_tipo , a.ac_val As acc_v , ac_tipo FROM cart_accert a WHERE /* a.codice IN ( Select codice From evento ) AND */ pb_code IN ( Select pb_code From evento ) AND ac_tipo NOT IN ( '00' , 'STI' , 'EO' , '_SG' ) AND a.data_open > Today()-365 ) ,
diario AS ( SELECT codice , data_open As diario_d , de_descr As diario FROM cart_descriz WHERE /* codice IN ( Select codice From evento ) AND */ pb_code IN ( Select pb_code From evento ) AND data_open > Today()-365 )
SELECT cognome , nome , nascita , sesso , eta , pbl_onset As ev_d , pbl As descriz , pbl_code As icd9_referto , '' As posologia , '' As act , Cast( '1' AS SmallInt) As n_ord
FROM paz_ssr p LEFT JOIN evento l ON p.codice = l.codice WHERE pbl_onset IS NOT Null
UNION
SELECT cognome , nome , nascita , sesso , eta , terap_d , drug , n_pezzi , posologia , atc , '2'
FROM paz_ssr p LEFT JOIN terapia t ON p.codice = t.codice WHERE terap_d IS NOT Null
UNION
SELECT cognome , nome , nascita , sesso , eta , acc_d , acc_tipo , acc_v , ac_tipo , '' , '3'
FROM paz_ssr p LEFT JOIN accert a ON p.codice = a.codice WHERE acc_d IS NOT Null
UNION
SELECT cognome , nome , nascita , sesso , eta , diario_d , diario , '' , '' , '' , '4'
FROM paz_ssr p LEFT JOIN diario d ON p.codice = d.codice WHERE diario_d IS NOT Null
ORDER BY 1 , 2 , 11
LIMIT 150 OFFSET 0
Adattare le Clausole ( specie quelle in WITH che selezionano le viste CTE ) alle proprie esigenze e/o necessità ; non ho suggerimenti migliori al riguardo . Ti saluto , Sergio , Orzivecchi BS
Cervino- Membro Junior
- Messaggi : 245
Punti : 5280
Voti per importanza dei messaggi : 22
Data d'iscrizione : 03.03.11
Età : 70
Località : Orzivecchi (BS)
query veramente complessa
Grazie per la pazienza per elaborare una query complicata. Purtroppo mi da risultato zero. non conosco la clausola WHIT prima di select e non so come adattarla. Forse si potrebbe fare per singola patologia perchè così essendo più semplice non si dovrebbe bloccare. Grazie ancora per la pazienza.
nanci giacinto- Membro Junior
- Messaggi : 128
Punti : 5208
Voti per importanza dei messaggi : -1
Data d'iscrizione : 02.03.11
Re: query veramente complessa
se anche le 3 semplici query poi assemblate nella query finale :
SELECT userid , nome FROM v_utenti WHERE nome ILike '%'
SELECT codice , addenda As pbl , cp_code As pbl_code , pb_code , data_open As pbl_onset , userid FROM cart_problemi WHERE userid IN ( SELECT userid FROM v_utenti WHERE nome ILike '%' ) AND ( addenda ILIKE '%Sinusite%' OR addenda ILIKE '%Bronchite%' ) AND data_open > Today()-365
SELECT p.codice , p.cognome , p.nome , p.nascita , Cast( Days( p.nascita , Today()+1)*24/8766 As SmallInt ) As eta , Cast( p.sesso As Char(1)) FROM pazienti p LEFT Outer JOIN nos_002 n On p.codice = n.codice WHERE n.pa_medi IN ( SELECT userid FROM v_utenti WHERE nome ILike '%' ) And p.pa_convenzione = 'S' And ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or ( n.pa_drevoca Between Date( Today())-365 And Today() And n.motivo_revoca = 'S')) And p.decesso Is Null
restituiscono 0 righe , Non ho idea di come si possa procedere ( sul mio MillePs sono efficienti e velocissime sia in MU che pgAdmin
SELECT userid , nome FROM v_utenti WHERE nome ILike '%'
SELECT codice , addenda As pbl , cp_code As pbl_code , pb_code , data_open As pbl_onset , userid FROM cart_problemi WHERE userid IN ( SELECT userid FROM v_utenti WHERE nome ILike '%' ) AND ( addenda ILIKE '%Sinusite%' OR addenda ILIKE '%Bronchite%' ) AND data_open > Today()-365
SELECT p.codice , p.cognome , p.nome , p.nascita , Cast( Days( p.nascita , Today()+1)*24/8766 As SmallInt ) As eta , Cast( p.sesso As Char(1)) FROM pazienti p LEFT Outer JOIN nos_002 n On p.codice = n.codice WHERE n.pa_medi IN ( SELECT userid FROM v_utenti WHERE nome ILike '%' ) And p.pa_convenzione = 'S' And ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or ( n.pa_drevoca Between Date( Today())-365 And Today() And n.motivo_revoca = 'S')) And p.decesso Is Null
restituiscono 0 righe , Non ho idea di come si possa procedere ( sul mio MillePs sono efficienti e velocissime sia in MU che pgAdmin
Ultima modifica di Cervino il Sab 11 Mar 2017 - 23:41 - modificato 1 volta.
Cervino- Membro Junior
- Messaggi : 245
Punti : 5280
Voti per importanza dei messaggi : 22
Data d'iscrizione : 03.03.11
Età : 70
Località : Orzivecchi (BS)
QUERY VERAMENTE COMPLESSA
sALVE GRAZIE PER LA PAZIENZA MA DA SEMPRE ZERO COME RISULTATO COMUNQUE LA COMPONGO. E' POSSIBILE ADATTARE LA QUERY PER POSTAZIONE SINGOLA PERCHE' FAREI LE ESTRAZIONI PER OGNI SINGOLO MEDICO IN QUANTO LAVORIAMO CON RRS SERVER. GRAZIE
nanci giacinto- Membro Junior
- Messaggi : 128
Punti : 5208
Voti per importanza dei messaggi : -1
Data d'iscrizione : 02.03.11
Re: query veramente complessa
purtroppo per errore ho cancellato il post precedente; è piu' difficile scrivere sul Forum che testare le query .nanci giacinto ha scritto:sALVE GRAZIE PER LA PAZIENZA MA DA SEMPRE ZERO COME RISULTATO COMUNQUE LA COMPONGO. E' POSSIBILE ADATTARE LA QUERY PER POSTAZIONE SINGOLA PERCHE' FAREI LE ESTRAZIONI PER OGNI SINGOLO MEDICO IN QUANTO LAVORIAMO CON RRS SERVER. GRAZIE
se anche le 3 semplici query , poi assemblate nella query finale :
SELECT userid , nome FROM v_utenti WHERE nome ILike '%'
SELECT codice , addenda As pbl , cp_code As pbl_code , pb_code , data_open As pbl_onset , userid FROM cart_problemi WHERE userid IN ( SELECT userid FROM v_utenti WHERE nome ILike '%' ) AND ( addenda ILIKE '%Sinusite%' OR addenda ILIKE '%Bronchite%' ) AND data_open > Today()-365
SELECT p.codice , p.cognome , p.nome , p.nascita , Cast( Days( p.nascita , Today()+1)*24/8766 As SmallInt ) As eta , Cast( p.sesso As Char(1)) FROM pazienti p LEFT Outer JOIN nos_002 n On p.codice = n.codice WHERE n.pa_medi IN ( SELECT userid FROM v_utenti WHERE nome ILike '%' ) And p.pa_convenzione = 'S' And ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or ( n.pa_drevoca Between Date( Today())-365 And Today() And n.motivo_revoca = 'S')) And p.decesso Is Null
restituiscono 0 righe , Non ho idea di come si possa procedere ( sul mio MillePs sono efficienti e velocissime sia in MU che pgAdmin
Cervino- Membro Junior
- Messaggi : 245
Punti : 5280
Voti per importanza dei messaggi : 22
Data d'iscrizione : 03.03.11
Età : 70
Località : Orzivecchi (BS)
query veramente complessa
GRAZIE PER LA PAZIENZA. IO AVREI FATTO QUESTE DUE QUERY UNA ESTRAE LA PATOLOGIA E LE RELATIVE TERAPIE E L'ALTRA LA PATOLOGIA + LE VISITE SPECIALISTICHE E GLI ACCERTEMENTI. DA SOLE FUNZIONANO BENE E' POSSIBILE METTERLE INSIEME E FARNE UNA SOLA?
Patologia + terapie
SELECT t.cognome, t.nome, t.sesso, (year(today())-year(t.datanasc)) AS eta, t.datavisita, t.terapia, t.atc, pro.dataopen, pro.icd9, pro.problema
FROM V_TERAPIE t inner join v_problemi_attivi pro on t.codice = pro.codice and t.icd9= pro.icd9
where t.icd9 = '461.9%%' or t.problema ilike '%%sinusite%%'
Patologia + esami e visiste specialistiche
SELECT a.cognome, a.nome, a.sesso, (year(today())-year(a.datanasc)) AS eta, a.datavisita, a.accertamento, a.icd9, pro.dataopen, pro.icd9, pro.problema
FROM V_ACCERTAMENTI a inner join v_problemi_attivi pro on a.codice = pro.codice and a.icd9= pro.icd9
where a.icd9 = '461.9%%' or a.problema ilike '%%sinusite%%'
Patologia + terapie
SELECT t.cognome, t.nome, t.sesso, (year(today())-year(t.datanasc)) AS eta, t.datavisita, t.terapia, t.atc, pro.dataopen, pro.icd9, pro.problema
FROM V_TERAPIE t inner join v_problemi_attivi pro on t.codice = pro.codice and t.icd9= pro.icd9
where t.icd9 = '461.9%%' or t.problema ilike '%%sinusite%%'
Patologia + esami e visiste specialistiche
SELECT a.cognome, a.nome, a.sesso, (year(today())-year(a.datanasc)) AS eta, a.datavisita, a.accertamento, a.icd9, pro.dataopen, pro.icd9, pro.problema
FROM V_ACCERTAMENTI a inner join v_problemi_attivi pro on a.codice = pro.codice and a.icd9= pro.icd9
where a.icd9 = '461.9%%' or a.problema ilike '%%sinusite%%'
nanci giacinto- Membro Junior
- Messaggi : 128
Punti : 5208
Voti per importanza dei messaggi : -1
Data d'iscrizione : 02.03.11
Re: query veramente complessa
Purtroppo alcune Viste non sono presenti in PgAdmin , in MU le 2 query vengono eseguite in tempi biblici e restituiscono 0 righe .nanci giacinto ha scritto:GRAZIE PER LA PAZIENZA. IO AVREI FATTO QUESTE DUE QUERY UNA ESTRAE LA PATOLOGIA E LE RELATIVE TERAPIE E L'ALTRA LA PATOLOGIA + LE VISITE SPECIALISTICHE E GLI ACCERTEMENTI. DA SOLE FUNZIONANO BENE E' POSSIBILE METTERLE INSIEME E FARNE UNA SOLA?
Patologia + terapie
SELECT t.cognome, t.nome, t.sesso, (year(today())-year(t.datanasc)) AS eta, t.datavisita, t.terapia, t.atc, pro.dataopen, pro.icd9, pro.problema
FROM V_TERAPIE t inner join v_problemi_attivi pro on t.codice = pro.codice and t.icd9= pro.icd9
where t.icd9 = '461.9%%' or t.problema ilike '%%sinusite%%'
Patologia + esami e visiste specialistiche
SELECT a.cognome, a.nome, a.sesso, (year(today())-year(a.datanasc)) AS eta, a.datavisita, a.accertamento, a.icd9, pro.dataopen, pro.icd9, pro.problema
FROM V_ACCERTAMENTI a inner join v_problemi_attivi pro on a.codice = pro.codice and a.icd9= pro.icd9
where a.icd9 = '461.9%%' or a.problema ilike '%%sinusite%%'
PS : sarebbe opportuno rimuovere il doppio simbolo '%%' . Saluti , Sergio
Cervino- Membro Junior
- Messaggi : 245
Punti : 5280
Voti per importanza dei messaggi : 22
Data d'iscrizione : 03.03.11
Età : 70
Località : Orzivecchi (BS)
Re: query veramente complessa
Ho provato a riscrivere la query con il vecchio sistema ( senza WITH & CTE ) lavoro tedioso e monotono ;nanci giacinto ha scritto:GRAZIE PER LA PAZIENZA. IO AVREI FATTO QUESTE DUE QUERY UNA ESTRAE LA PATOLOGIA E LE RELATIVE TERAPIE E L'ALTRA LA PATOLOGIA + LE VISITE SPECIALISTICHE E GLI ACCERTEMENTI. DA SOLE FUNZIONANO BENE E' POSSIBILE METTERLE INSIEME E FARNE UNA SOLA?
Patologia + terapie
SELECT t.cognome, t.nome, t.sesso, (year(today())-year(t.datanasc)) AS eta, t.datavisita, t.terapia, t.atc, pro.dataopen, pro.icd9, pro.problema
FROM V_TERAPIE t inner join v_problemi_attivi pro on t.codice = pro.codice and t.icd9= pro.icd9
where t.icd9 = '461.9%%' or t.problema ilike '%%sinusite%%'
Patologia + esami e visiste specialistiche
SELECT a.cognome, a.nome, a.sesso, (year(today())-year(a.datanasc)) AS eta, a.datavisita, a.accertamento, a.icd9, pro.dataopen, pro.icd9, pro.problema
FROM V_ACCERTAMENTI a inner join v_problemi_attivi pro on a.codice = pro.codice and a.icd9= pro.icd9
where a.icd9 = '461.9%%' or a.problema ilike '%%sinusite%%'
SELECT p.cognome , p.nome , p.nascita , p.sesso , Cast( Days( p.nascita , Today()+1)*24/8766 As SmallInt ) As eta , l.data_open As ev_d , pr_descr As descriz , cp_code As icd9_referto , '' As posologia , '' As act , Cast( '1' AS SmallInt) As n_ord
FROM ((( pazienti p LEFT Outer JOIN nos_002 n ON p.codice = n.codice ) LEFT Outer JOIN v_utenti u ON u.userid = n.pa_medi )
LEFT Outer JOIN cart_problemi l ON p.codice = l.codice )
WHERE u.nome ILIKE '%' AND p.pa_convenzione = 'S' AND ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or ( n.pa_drevoca Between Date( Today())-365 And Today() And n.motivo_revoca = 'S')) And p.decesso Is Null
AND (( l.addenda ILIKE '%Sinusite%' OR l.addenda ILIKE '%Bronchite%' ) AND l.data_open > Today()-365 ) AND l.data_open IS NOT Null
UNION
SELECT p.cognome , p.nome , p.nascita , p.sesso , Cast( Days( p.nascita , Today()+1)*24/8766 As SmallInt ) As eta , t.data_open , t.co_des , t.te_npezzi , t.po_des , t.co_atc , '2'
FROM ((( pazienti p LEFT Outer JOIN nos_002 n ON p.codice = n.codice ) LEFT Outer JOIN v_utenti u ON u.userid = n.pa_medi )
LEFT Outer JOIN cart_problemi l ON p.codice = l.codice ) LEFT Outer JOIN cart_terap t ON p.codice = t.codice
WHERE u.nome ILIKE '%' AND p.pa_convenzione = 'S' AND ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or ( n.pa_drevoca Between Date( Today())-365 And Today() And n.motivo_revoca = 'S')) And p.decesso Is Null
AND (( l.addenda ILIKE '%Sinusite%' OR l.addenda ILIKE '%Bronchite%' ) AND l.data_open > Today()-365 )
AND l.pb_code = t.pb_code AND t.data_open IS NOT Null
UNION
SELECT p.cognome , p.nome , p.nascita , p.sesso , Cast( Days( p.nascita , Today()+1)*24/8766 As SmallInt ) As eta , a.data_open , a.ac_des , a.ac_val , a.ac_tipo , '' , '3'
FROM ((( pazienti p LEFT Outer JOIN nos_002 n ON p.codice = n.codice ) LEFT Outer JOIN v_utenti u ON u.userid = n.pa_medi )
LEFT Outer JOIN cart_problemi l ON p.codice = l.codice ) LEFT Outer JOIN cart_accert a ON p.codice = a.codice
WHERE u.nome ILIKE '%' AND p.pa_convenzione = 'S' AND ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or ( n.pa_drevoca Between Date( Today())-365 And Today() And n.motivo_revoca = 'S')) And p.decesso Is Null
AND (( l.addenda ILIKE '%Sinusite%' OR l.addenda ILIKE '%Bronchite%' ) AND l.data_open > Today()-365 )
AND l.pb_code = a.pb_code AND a.ac_tipo NOT IN ( '00' , 'STI' , 'EO' , '_SG' ) AND a.data_open IS NOT Null
UNION
SELECT p.cognome , p.nome , p.nascita , p.sesso , Cast( Days( p.nascita , Today()+1)*24/8766 As SmallInt ) As eta , d.data_open , d.de_descr , '' , '' , '' , '4'
FROM ((( pazienti p LEFT Outer JOIN nos_002 n ON p.codice = n.codice ) LEFT Outer JOIN v_utenti u ON u.userid = n.pa_medi )
LEFT Outer JOIN cart_problemi l ON p.codice = l.codice ) LEFT Outer JOIN cart_descriz d ON p.codice = d.codice
WHERE u.nome ILIKE '%' AND p.pa_convenzione = 'S' AND ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or ( n.pa_drevoca Between Date( Today())-365 And Today() And n.motivo_revoca = 'S')) And p.decesso Is Null
AND (( l.addenda ILIKE '%Sinusite%' OR l.addenda ILIKE '%Bronchite%' ) AND l.data_open > Today()-365 )
AND l.pb_code = d.pb_code AND d.data_open IS NOT Null
ORDER BY 1 , 2 , 11
LIMIT 150 OFFSET 0
Sul mio MillePS monoUtente restituiscono lo stesso numero di righe ma uniformare le clausole nelle 2 query con impostazione logica differente, non è facile : spero Ti possa essere utile , almeno in parte . Sergio
Cervino- Membro Junior
- Messaggi : 245
Punti : 5280
Voti per importanza dei messaggi : 22
Data d'iscrizione : 03.03.11
Età : 70
Località : Orzivecchi (BS)
Re: query veramente complessa
Sergio ho adattato questa query al mio progetto Dono, estrae gli accertamenti eccetto la scheda pain (che come ti avevo detto nel mio post con la query di Giacinto adattata:Cervino ha scritto:Ho provato a riscrivere la query con il vecchio sistema ( senza WITH & CTE ) lavoro tedioso e monotono ;nanci giacinto ha scritto:GRAZIE PER LA PAZIENZA. IO AVREI FATTO QUESTE DUE QUERY UNA ESTRAE LA PATOLOGIA E LE RELATIVE TERAPIE E L'ALTRA LA PATOLOGIA + LE VISITE SPECIALISTICHE E GLI ACCERTEMENTI. DA SOLE FUNZIONANO BENE E' POSSIBILE METTERLE INSIEME E FARNE UNA SOLA?
Patologia + terapie
SELECT t.cognome, t.nome, t.sesso, (year(today())-year(t.datanasc)) AS eta, t.datavisita, t.terapia, t.atc, pro.dataopen, pro.icd9, pro.problema
FROM V_TERAPIE t inner join v_problemi_attivi pro on t.codice = pro.codice and t.icd9= pro.icd9
where t.icd9 = '461.9%%' or t.problema ilike '%%sinusite%%'
Patologia + esami e visiste specialistiche
SELECT a.cognome, a.nome, a.sesso, (year(today())-year(a.datanasc)) AS eta, a.datavisita, a.accertamento, a.icd9, pro.dataopen, pro.icd9, pro.problema
FROM V_ACCERTAMENTI a inner join v_problemi_attivi pro on a.codice = pro.codice and a.icd9= pro.icd9
where a.icd9 = '461.9%%' or a.problema ilike '%%sinusite%%'
SELECT p.cognome , p.nome , p.nascita , p.sesso , Cast( Days( p.nascita , Today()+1)*24/8766 As SmallInt ) As eta , l.data_open As ev_d , pr_descr As descriz , cp_code As icd9_referto , '' As posologia , '' As act , Cast( '1' AS SmallInt) As n_ord
FROM ((( pazienti p LEFT Outer JOIN nos_002 n ON p.codice = n.codice ) LEFT Outer JOIN v_utenti u ON u.userid = n.pa_medi )
LEFT Outer JOIN cart_problemi l ON p.codice = l.codice )
WHERE u.nome ILIKE '%' AND p.pa_convenzione = 'S' AND ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or ( n.pa_drevoca Between Date( Today())-365 And Today() And n.motivo_revoca = 'S')) And p.decesso Is Null
AND (( l.addenda ILIKE '%Sinusite%' OR l.addenda ILIKE '%Bronchite%' ) AND l.data_open > Today()-365 ) AND l.data_open IS NOT Null
UNION
SELECT p.cognome , p.nome , p.nascita , p.sesso , Cast( Days( p.nascita , Today()+1)*24/8766 As SmallInt ) As eta , t.data_open , t.co_des , t.te_npezzi , t.po_des , t.co_atc , '2'
FROM ((( pazienti p LEFT Outer JOIN nos_002 n ON p.codice = n.codice ) LEFT Outer JOIN v_utenti u ON u.userid = n.pa_medi )
LEFT Outer JOIN cart_problemi l ON p.codice = l.codice ) LEFT Outer JOIN cart_terap t ON p.codice = t.codice
WHERE u.nome ILIKE '%' AND p.pa_convenzione = 'S' AND ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or ( n.pa_drevoca Between Date( Today())-365 And Today() And n.motivo_revoca = 'S')) And p.decesso Is Null
AND (( l.addenda ILIKE '%Sinusite%' OR l.addenda ILIKE '%Bronchite%' ) AND l.data_open > Today()-365 )
AND l.pb_code = t.pb_code AND t.data_open IS NOT Null
UNION
SELECT p.cognome , p.nome , p.nascita , p.sesso , Cast( Days( p.nascita , Today()+1)*24/8766 As SmallInt ) As eta , a.data_open , a.ac_des , a.ac_val , a.ac_tipo , '' , '3'
FROM ((( pazienti p LEFT Outer JOIN nos_002 n ON p.codice = n.codice ) LEFT Outer JOIN v_utenti u ON u.userid = n.pa_medi )
LEFT Outer JOIN cart_problemi l ON p.codice = l.codice ) LEFT Outer JOIN cart_accert a ON p.codice = a.codice
WHERE u.nome ILIKE '%' AND p.pa_convenzione = 'S' AND ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or ( n.pa_drevoca Between Date( Today())-365 And Today() And n.motivo_revoca = 'S')) And p.decesso Is Null
AND (( l.addenda ILIKE '%Sinusite%' OR l.addenda ILIKE '%Bronchite%' ) AND l.data_open > Today()-365 )
AND l.pb_code = a.pb_code AND a.ac_tipo NOT IN ( '00' , 'STI' , 'EO' , '_SG' ) AND a.data_open IS NOT Null
UNION
SELECT p.cognome , p.nome , p.nascita , p.sesso , Cast( Days( p.nascita , Today()+1)*24/8766 As SmallInt ) As eta , d.data_open , d.de_descr , '' , '' , '' , '4'
FROM ((( pazienti p LEFT Outer JOIN nos_002 n ON p.codice = n.codice ) LEFT Outer JOIN v_utenti u ON u.userid = n.pa_medi )
LEFT Outer JOIN cart_problemi l ON p.codice = l.codice ) LEFT Outer JOIN cart_descriz d ON p.codice = d.codice
WHERE u.nome ILIKE '%' AND p.pa_convenzione = 'S' AND ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or ( n.pa_drevoca Between Date( Today())-365 And Today() And n.motivo_revoca = 'S')) And p.decesso Is Null
AND (( l.addenda ILIKE '%Sinusite%' OR l.addenda ILIKE '%Bronchite%' ) AND l.data_open > Today()-365 )
AND l.pb_code = d.pb_code AND d.data_open IS NOT Null
ORDER BY 1 , 2 , 11
LIMIT 150 OFFSET 0
Sul mio MillePS monoUtente restituiscono lo stesso numero di righe ma uniformare le clausole nelle 2 query con impostazione logica differente, non è facile : spero Ti possa essere utile , almeno in parte . Sergio
SELECT a.cognome, a.nome, a.sesso, (year(today())-year(a.datanasc)) AS eta, a.datavisita, a.accertamento, a.icd9, pro.dataopen, pro.icd9, pro.problema
FROM V_ACCERTAMENTI a inner join v_problemi_attivi pro on a.codice = pro.codice and a.icd9= pro.icd9
where a.problema ilike '%dono%'
qualcosa fa vedere)
la terapia non va, fa casino con posologia..
Mario
mario shirt- Membro Junior
- Messaggi : 254
Punti : 5388
Voti per importanza dei messaggi : 4
Data d'iscrizione : 21.02.11
Età : 69
query veramente complessa
grazie per l'impegno ma da sempre e inesorabilmente zero come risultato
nanci giacinto- Membro Junior
- Messaggi : 128
Punti : 5208
Voti per importanza dei messaggi : -1
Data d'iscrizione : 02.03.11
query veramente complessa
Grazie per l'impegno ma da sempre e inesorabilmente zero come risultato
nanci giacinto- Membro Junior
- Messaggi : 128
Punti : 5208
Voti per importanza dei messaggi : -1
Data d'iscrizione : 02.03.11
Re: query veramente complessa
Non saprei dare una spiegazione logica visto che al collega Mario funziona ; comunque quando una query complessa non funziona basta ridurla progressivamente ai minimi termini per superare l' ostacolo :nanci giacinto ha scritto:Grazie per l'impegno ma da sempre e inesorabilmente zero come risultato
SELECT u.cognome||' '||u.nome As mmg , p.cognome , p.nome , p.nascita , p.sesso , Cast( Days( p.nascita , Today()+1)*24/8766 As SmallInt ) As eta , l.data_open As ev_d , pr_descr ||' , '|| Addenda As descriz , cp_code As icd9_referto , '' As posologia , '' As act , Cast( '1' AS SmallInt) As n_ord
FROM ((( pazienti p LEFT Outer JOIN nos_002 n ON p.codice = n.codice ) LEFT Outer JOIN v_utenti u ON u.userid = n.pa_medi )
LEFT Outer JOIN cart_problemi l ON p.codice = l.codice )
WHERE u.nome ILIKE '%' AND p.pa_convenzione = 'S' AND ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or ( n.pa_drevoca Between Date( Today())-365 And Today() And n.motivo_revoca = 'S')) And p.decesso Is Null
AND (( l.addenda ILIKE '%Sinusite%' OR l.addenda ILIKE '%Bronchite%') AND l.data_open Between '2016-01-01' And '2017-03-31' ) AND l.data_open IS NOT Null
/* UNION
SELECT u.cognome||' '||u.nome As mmg , p.cognome , p.nome , p.nascita , p.sesso , Cast( Days( p.nascita , Today()+1)*24/8766 As SmallInt ) As eta , t.data_open , t.co_des , t.te_npezzi , t.po_des , t.co_atc , '2'
FROM ((( pazienti p LEFT Outer JOIN nos_002 n ON p.codice = n.codice ) LEFT Outer JOIN v_utenti u ON u.userid = n.pa_medi )
LEFT Outer JOIN cart_problemi l ON p.codice = l.codice ) LEFT Outer JOIN cart_terap t ON p.codice = t.codice
WHERE u.nome ILIKE '%' AND p.pa_convenzione = 'S' AND ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or ( n.pa_drevoca Between Date( Today())-365 And Today() And n.motivo_revoca = 'S')) And p.decesso Is Null
AND (( l.addenda ILIKE '%Sinusite%' OR l.addenda ILIKE '%Bronchite%') AND l.data_open Between '2016-01-01' And '2017-03-31' AND t.data_open Between '2016-01-01' And '2017-03-31')
AND l.pb_code = t.pb_code AND t.data_open IS NOT Null
UNION
SELECT u.cognome||' '||u.nome As mmg , p.cognome , p.nome , p.nascita , p.sesso , Cast( Days( p.nascita , Today()+1)*24/8766 As SmallInt ) As eta , a.data_open , a.ac_des , a.ac_val , a.ac_tipo , '' , '3'
FROM ((( pazienti p LEFT Outer JOIN nos_002 n ON p.codice = n.codice ) LEFT Outer JOIN v_utenti u ON u.userid = n.pa_medi )
LEFT Outer JOIN cart_problemi l ON p.codice = l.codice ) LEFT Outer JOIN cart_accert a ON p.codice = a.codice
WHERE u.nome ILIKE '%' AND p.pa_convenzione = 'S' AND ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or ( n.pa_drevoca Between Date( Today())-365 And Today() And n.motivo_revoca = 'S')) And p.decesso Is Null
AND (( l.addenda ILIKE '%Sinusite%' OR l.addenda ILIKE '%Bronchite%') AND l.data_open Between '2016-01-01' And '2017-03-31' AND a.data_open Between '2016-01-01' And '2017-03-31')
AND l.pb_code = a.pb_code AND a.ac_tipo NOT IN ( '00' , 'STI' , 'EO' , '_SG' ) AND a.data_open IS NOT Null
UNION
SELECT u.cognome||' '||u.nome As mmg , p.cognome , p.nome , p.nascita , p.sesso , Cast( Days( p.nascita , Today()+1)*24/8766 As SmallInt ) As eta , d.data_open , d.de_descr , '' , '' , '' , '4'
FROM ((( pazienti p LEFT Outer JOIN nos_002 n ON p.codice = n.codice ) LEFT Outer JOIN v_utenti u ON u.userid = n.pa_medi )
LEFT Outer JOIN cart_problemi l ON p.codice = l.codice ) LEFT Outer JOIN cart_descriz d ON p.codice = d.codice
WHERE u.nome ILIKE '%' AND p.pa_convenzione = 'S' AND ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or ( n.pa_drevoca Between Date( Today())-365 And Today() And n.motivo_revoca = 'S')) And p.decesso Is Null
AND (( l.addenda ILIKE '%Sinusite%' OR l.addenda ILIKE '%Bronchite%') AND l.data_open Between '2016-01-01' And '2017-03-31' AND d.data_open Between '2016-01-01' And '2017-03-31')
AND l.pb_code = d.pb_code AND d.data_open IS NOT Null */
ORDER BY 1 , 2 , 11 , 7
LIMIT 150 OFFSET 0
se il problema persiste , prova con :
SELECT u.cognome||' '||u.nome As mmg , p.cognome , p.nome , p.nascita , p.sesso , Cast( Days( p.nascita , Today()+1)*24/8766 As SmallInt ) As eta
FROM (( pazienti p LEFT Outer JOIN nos_002 n ON p.codice = n.codice ) LEFT Outer JOIN v_utenti u ON u.userid = n.pa_medi )
WHERE u.nome ILIKE '%' AND u.codice_regionale ILIKE '%' AND p.pa_convenzione = 'S' AND ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or ( n.pa_drevoca Between Date( Today())-365 And Today() And n.motivo_revoca = 'S')) And p.decesso Is Null
inserendo anche ev. nome utente o codice regionale di un singolo MMG
Se anche cosi , non dovesse restituire nessuna riga, abbiamo MillePS con schemi diversi ; se invece dovesse funzionare aggiungere progressivamente una' altra query ( sostando /* dal primo --> davanti al secondo UNION
Sergio
Cervino- Membro Junior
- Messaggi : 245
Punti : 5280
Voti per importanza dei messaggi : 22
Data d'iscrizione : 03.03.11
Età : 70
Località : Orzivecchi (BS)
Re: query veramente complessa
Per completeezza, la prima query da 0 anche a me, la seconda mi estrae tutti i paz del mio database (miei e dell'associato) se metto mio nome al posto di u_nome e mio codice regionale dopo mi da 0.Cervino ha scritto:Non saprei dare una spiegazione logica visto che al collega Mario funziona ; comunque quando una query complessa non funziona basta ridurla progressivamente ai minimi termini per superare l' ostacolo :nanci giacinto ha scritto:Grazie per l'impegno ma da sempre e inesorabilmente zero come risultato
SELECT u.cognome||' '||u.nome As mmg , p.cognome , p.nome , p.nascita , p.sesso , Cast( Days( p.nascita , Today()+1)*24/8766 As SmallInt ) As eta , l.data_open As ev_d , pr_descr ||' , '|| Addenda As descriz , cp_code As icd9_referto , '' As posologia , '' As act , Cast( '1' AS SmallInt) As n_ord
FROM ((( pazienti p LEFT Outer JOIN nos_002 n ON p.codice = n.codice ) LEFT Outer JOIN v_utenti u ON u.userid = n.pa_medi )
LEFT Outer JOIN cart_problemi l ON p.codice = l.codice )
WHERE u.nome ILIKE '%' AND p.pa_convenzione = 'S' AND ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or ( n.pa_drevoca Between Date( Today())-365 And Today() And n.motivo_revoca = 'S')) And p.decesso Is Null
AND (( l.addenda ILIKE '%Sinusite%' OR l.addenda ILIKE '%Bronchite%') AND l.data_open Between '2016-01-01' And '2017-03-31' ) AND l.data_open IS NOT Null
/* UNION
SELECT u.cognome||' '||u.nome As mmg , p.cognome , p.nome , p.nascita , p.sesso , Cast( Days( p.nascita , Today()+1)*24/8766 As SmallInt ) As eta , t.data_open , t.co_des , t.te_npezzi , t.po_des , t.co_atc , '2'
FROM ((( pazienti p LEFT Outer JOIN nos_002 n ON p.codice = n.codice ) LEFT Outer JOIN v_utenti u ON u.userid = n.pa_medi )
LEFT Outer JOIN cart_problemi l ON p.codice = l.codice ) LEFT Outer JOIN cart_terap t ON p.codice = t.codice
WHERE u.nome ILIKE '%' AND p.pa_convenzione = 'S' AND ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or ( n.pa_drevoca Between Date( Today())-365 And Today() And n.motivo_revoca = 'S')) And p.decesso Is Null
AND (( l.addenda ILIKE '%Sinusite%' OR l.addenda ILIKE '%Bronchite%') AND l.data_open Between '2016-01-01' And '2017-03-31' AND t.data_open Between '2016-01-01' And '2017-03-31')
AND l.pb_code = t.pb_code AND t.data_open IS NOT Null
UNION
SELECT u.cognome||' '||u.nome As mmg , p.cognome , p.nome , p.nascita , p.sesso , Cast( Days( p.nascita , Today()+1)*24/8766 As SmallInt ) As eta , a.data_open , a.ac_des , a.ac_val , a.ac_tipo , '' , '3'
FROM ((( pazienti p LEFT Outer JOIN nos_002 n ON p.codice = n.codice ) LEFT Outer JOIN v_utenti u ON u.userid = n.pa_medi )
LEFT Outer JOIN cart_problemi l ON p.codice = l.codice ) LEFT Outer JOIN cart_accert a ON p.codice = a.codice
WHERE u.nome ILIKE '%' AND p.pa_convenzione = 'S' AND ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or ( n.pa_drevoca Between Date( Today())-365 And Today() And n.motivo_revoca = 'S')) And p.decesso Is Null
AND (( l.addenda ILIKE '%Sinusite%' OR l.addenda ILIKE '%Bronchite%') AND l.data_open Between '2016-01-01' And '2017-03-31' AND a.data_open Between '2016-01-01' And '2017-03-31')
AND l.pb_code = a.pb_code AND a.ac_tipo NOT IN ( '00' , 'STI' , 'EO' , '_SG' ) AND a.data_open IS NOT Null
UNION
SELECT u.cognome||' '||u.nome As mmg , p.cognome , p.nome , p.nascita , p.sesso , Cast( Days( p.nascita , Today()+1)*24/8766 As SmallInt ) As eta , d.data_open , d.de_descr , '' , '' , '' , '4'
FROM ((( pazienti p LEFT Outer JOIN nos_002 n ON p.codice = n.codice ) LEFT Outer JOIN v_utenti u ON u.userid = n.pa_medi )
LEFT Outer JOIN cart_problemi l ON p.codice = l.codice ) LEFT Outer JOIN cart_descriz d ON p.codice = d.codice
WHERE u.nome ILIKE '%' AND p.pa_convenzione = 'S' AND ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or ( n.pa_drevoca Between Date( Today())-365 And Today() And n.motivo_revoca = 'S')) And p.decesso Is Null
AND (( l.addenda ILIKE '%Sinusite%' OR l.addenda ILIKE '%Bronchite%') AND l.data_open Between '2016-01-01' And '2017-03-31' AND d.data_open Between '2016-01-01' And '2017-03-31')
AND l.pb_code = d.pb_code AND d.data_open IS NOT Null */
ORDER BY 1 , 2 , 11 , 7
LIMIT 150 OFFSET 0
se il problema persiste , prova con :
SELECT u.cognome||' '||u.nome As mmg , p.cognome , p.nome , p.nascita , p.sesso , Cast( Days( p.nascita , Today()+1)*24/8766 As SmallInt ) As eta
FROM (( pazienti p LEFT Outer JOIN nos_002 n ON p.codice = n.codice ) LEFT Outer JOIN v_utenti u ON u.userid = n.pa_medi )
WHERE u.nome ILIKE '%' AND u.codice_regionale ILIKE '%' AND p.pa_convenzione = 'S' AND ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or ( n.pa_drevoca Between Date( Today())-365 And Today() And n.motivo_revoca = 'S')) And p.decesso Is Null
inserendo anche ev. nome utente o codice regionale di un singolo MMG
Se anche cosi , non dovesse restituire nessuna riga, abbiamo MillePS con schemi diversi ; se invece dovesse funzionare aggiungere progressivamente una' altra query ( sostando /* dal primo --> davanti al secondo UNION
Sergio
Forse non ho il problema sinusite o bronchite xche' se metto dono al posto di sinusite sulla prima query mi va..
Mario
P.S. scoperto l'arcano... I problemi sinusite e bronchite sono stati inseriti prima delle date immesse. Ho provato a variare l'inizio della ricerca ed anche a me estrae i p. con il problema bronchite. Se metto dono al posto di bronchite mi andava xce' i problemi con "dono" erano inseriti in quellìarco di tempo.
mario shirt- Membro Junior
- Messaggi : 254
Punti : 5388
Voti per importanza dei messaggi : 4
Data d'iscrizione : 21.02.11
Età : 69
Re: query veramente complessa
Grazie Mario x le prove e le utili Info e di conseguenza ho provato a modificare la query in tal modo :mario shirt ha scritto:Per completezza, la prima query da 0 anche a me, la seconda mi estrae tutti i paz del mio database (miei e dell'associato) se metto mio nome al posto di u_nome e mio codice regionale dopo mi da 0.... se il problema persiste , prova con :
SELECT u.cognome||' '||u.nome As mmg , p.cognome , p.nome , p.nascita , p.sesso , Cast( Days( p.nascita , Today()+1)*24/8766 As SmallInt ) As eta
FROM (( pazienti p LEFT Outer JOIN nos_002 n ON p.codice = n.codice ) LEFT Outer JOIN v_utenti u ON u.userid = n.pa_medi )
WHERE u.nome ILIKE '%' AND u.codice_regionale ILIKE '%' AND p.pa_convenzione = 'S' AND ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or ( n.pa_drevoca Between Date( Today())-365 And Today() And n.motivo_revoca = 'S')) And p.decesso Is Null
inserendo anche ev. nome utente o codice regionale di un singolo MMG
Se anche cosi , non dovesse restituire nessuna riga, abbiamo MillePS con schemi diversi ; se invece dovesse funzionare aggiungere progressivamente un' altra query ( spostando /* dal primo --> davanti al secondo UNION
Sergio
Forse non ho il problema sinusite o bronchite xche' se metto dono al posto di sinusite sulla prima query mi va..
Mario
P.S. scoperto l'arcano... I problemi sinusite e bronchite sono stati inseriti prima delle date immesse. Ho provato a variare l'inizio della ricerca ed anche a me estrae i p. con il problema bronchite. Se metto dono al posto di bronchite mi andava xce' i problemi con "dono" erano inseriti in quell' arco di tempo.
SELECT u.cognome||' '||u.nome As mmg , p.cognome , p.nome , p.nascita , p.sesso , Cast( Days( p.nascita , Today()+1)*24/8766 As SmallInt ) As eta , l.data_open As ev_d , pr_descr ||' , '|| Addenda As descriz , cp_code As icd9_referto , '' As posologia , '' As act , Cast( '1' AS SmallInt) As n_ord
FROM ((( pazienti p LEFT Outer JOIN nos_002 n ON p.codice = n.codice ) LEFT Outer JOIN v_utenti u ON u.userid = n.pa_medi )
LEFT Outer JOIN cart_problemi l ON p.codice = l.codice )
WHERE u.nome ILIKE '%' AND p.pa_convenzione = 'S' AND ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or ( n.pa_drevoca Between Date( Today())-365 And Today() And n.motivo_revoca = 'S')) And p.decesso Is Null
AND (( pr_descr ILIKE '%Bronchite%' OR pr_descr ILIKE '%Sinusite%' OR addenda ILIKE '%Bronchite%' OR addenda ILIKE '%Sinusite%' ) AND l.data_open Between '2015-01-01' And '2016-03-31' ) AND l.data_open IS NOT Null
UNION
SELECT u.cognome||' '||u.nome As mmg , p.cognome , p.nome , p.nascita , p.sesso , Cast( Days( p.nascita , Today()+1)*24/8766 As SmallInt ) As eta , t.data_open , t.co_des , t.te_npezzi , t.po_des , t.co_atc , '2'
FROM ((( pazienti p LEFT Outer JOIN nos_002 n ON p.codice = n.codice ) LEFT Outer JOIN v_utenti u ON u.userid = n.pa_medi )
LEFT Outer JOIN cart_problemi l ON p.codice = l.codice ) LEFT Outer JOIN cart_terap t ON p.codice = t.codice
WHERE u.nome ILIKE '%' AND p.pa_convenzione = 'S' AND ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or ( n.pa_drevoca Between Date( Today())-365 And Today() And n.motivo_revoca = 'S')) And p.decesso Is Null
AND (( pr_descr ILIKE '%Bronchite%' OR pr_descr ILIKE '%Sinusite%' OR addenda ILIKE '%Bronchite%' OR addenda ILIKE '%Sinusite%' ) AND l.data_open Between '2015-01-01' And '2016-03-31' AND t.data_open Between '2015-01-01' And '2016-03-31')
AND l.pb_code = t.pb_code AND t.data_open IS NOT Null
UNION
SELECT u.cognome||' '||u.nome As mmg , p.cognome , p.nome , p.nascita , p.sesso , Cast( Days( p.nascita , Today()+1)*24/8766 As SmallInt ) As eta , a.data_open , a.ac_des , a.ac_val , a.ac_tipo , '' , '3'
FROM ((( pazienti p LEFT Outer JOIN nos_002 n ON p.codice = n.codice ) LEFT Outer JOIN v_utenti u ON u.userid = n.pa_medi )
LEFT Outer JOIN cart_problemi l ON p.codice = l.codice ) LEFT Outer JOIN cart_accert a ON p.codice = a.codice
WHERE u.nome ILIKE '%' AND p.pa_convenzione = 'S' AND ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or ( n.pa_drevoca Between Date( Today())-365 And Today() And n.motivo_revoca = 'S')) And p.decesso Is Null
AND (( pr_descr ILIKE '%Bronchite%' OR pr_descr ILIKE '%Sinusite%' OR addenda ILIKE '%Bronchite%' OR addenda ILIKE '%Sinusite%' ) AND l.data_open Between '2015-01-01' And '2016-03-31' AND a.data_open Between '2015-01-01' And '2016-03-31')
AND l.pb_code = a.pb_code AND a.ac_tipo NOT IN ( '00' , 'STI' , 'EO' , '_SG' ) AND a.data_open IS NOT Null
UNION
SELECT u.cognome||' '||u.nome As mmg , p.cognome , p.nome , p.nascita , p.sesso , Cast( Days( p.nascita , Today()+1)*24/8766 As SmallInt ) As eta , d.data_open , d.de_descr , '' , '' , '' , '4'
FROM ((( pazienti p LEFT Outer JOIN nos_002 n ON p.codice = n.codice ) LEFT Outer JOIN v_utenti u ON u.userid = n.pa_medi )
LEFT Outer JOIN cart_problemi l ON p.codice = l.codice ) LEFT Outer JOIN cart_descriz d ON p.codice = d.codice
WHERE u.nome ILIKE '%' AND p.pa_convenzione = 'S' AND ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or ( n.pa_drevoca Between Date( Today())-365 And Today() And n.motivo_revoca = 'S')) And p.decesso Is Null
AND (( pr_descr ILIKE '%Bronchite%' OR pr_descr ILIKE '%Sinusite%' OR addenda ILIKE '%Bronchite%' OR addenda ILIKE '%Sinusite%' ) AND l.data_open Between '2015-01-01' And '2016-03-31' AND d.data_open Between '2015-01-01' And '2016-03-31')
AND l.pb_code = d.pb_code AND d.data_open IS NOT Null
ORDER BY 1 , 2 , 11 , 7
LIMIT 150 OFFSET 0
Sorprende invece il risultato ottenuto con la seconda query : 0 righe inserendo ( iniziali ) nome utente e/o codice regionale di un singolo MMG :
SELECT u.cognome||' '||u.nome As mmg , p.cognome , p.nome , p.nascita , p.sesso , Cast( Days( p.nascita , Today()+1)*24/8766 As SmallInt ) As eta
FROM (( pazienti p LEFT Outer JOIN nos_002 n ON p.codice = n.codice ) LEFT Outer JOIN v_utenti u ON u.userid = n.pa_medi )
WHERE u.nome ILIKE '%' AND u.codice_regionale ILIKE '%' AND p.pa_convenzione = 'S' AND ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or ( n.pa_drevoca Between Date( Today())-365 And Today() And n.motivo_revoca = 'S')) And p.decesso Is Null
apparentemente senza spiegazioni, se si utilizza almeno in parte uno dei 2 campi ottenuti con : SELECT * FROM v_utenti
Saluti , Sergio
Cervino- Membro Junior
- Messaggi : 245
Punti : 5280
Voti per importanza dei messaggi : 22
Data d'iscrizione : 03.03.11
Età : 70
Località : Orzivecchi (BS)
Re: query veramente complessa
La nuova prima query ok, ma mi spieghi cosa hai modificato e cosa cerca: cerca le terapie ai paz con diagnosi di bronchite o sinusite in qualsiasi data ma prescritta nel periodo inserito?Cervino ha scritto:Grazie Mario x le prove e le utili Info e di conseguenza ho provato a modificare la query in tal modo :mario shirt ha scritto:
Per completezza, la prima query da 0 anche a me, la seconda mi estrae tutti i paz del mio database (miei e dell'associato) se metto mio nome al posto di u_nome e mio codice regionale dopo mi da 0.
Forse non ho il problema sinusite o bronchite xche' se metto dono al posto di sinusite sulla prima query mi va..
Mario
P.S. scoperto l'arcano... I problemi sinusite e bronchite sono stati inseriti prima delle date immesse. Ho provato a variare l'inizio della ricerca ed anche a me estrae i p. con il problema bronchite. Se metto dono al posto di bronchite mi andava xce' i problemi con "dono" erano inseriti in quell' arco di tempo.
SELECT u.cognome||' '||u.nome As mmg , p.cognome , p.nome , p.nascita , p.sesso , Cast( Days( p.nascita , Today()+1)*24/8766 As SmallInt ) As eta , l.data_open As ev_d , pr_descr ||' , '|| Addenda As descriz , cp_code As icd9_referto , '' As posologia , '' As act , Cast( '1' AS SmallInt) As n_ord
FROM ((( pazienti p LEFT Outer JOIN nos_002 n ON p.codice = n.codice ) LEFT Outer JOIN v_utenti u ON u.userid = n.pa_medi )
LEFT Outer JOIN cart_problemi l ON p.codice = l.codice )
WHERE u.nome ILIKE '%' AND p.pa_convenzione = 'S' AND ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or ( n.pa_drevoca Between Date( Today())-365 And Today() And n.motivo_revoca = 'S')) And p.decesso Is Null
AND (( pr_descr ILIKE '%Bronchite%' OR pr_descr ILIKE '%Sinusite%' OR addenda ILIKE '%Bronchite%' OR addenda ILIKE '%Sinusite%' ) AND l.data_open Between '2015-01-01' And '2016-03-31' ) AND l.data_open IS NOT Null
UNION
SELECT u.cognome||' '||u.nome As mmg , p.cognome , p.nome , p.nascita , p.sesso , Cast( Days( p.nascita , Today()+1)*24/8766 As SmallInt ) As eta , t.data_open , t.co_des , t.te_npezzi , t.po_des , t.co_atc , '2'
FROM ((( pazienti p LEFT Outer JOIN nos_002 n ON p.codice = n.codice ) LEFT Outer JOIN v_utenti u ON u.userid = n.pa_medi )
LEFT Outer JOIN cart_problemi l ON p.codice = l.codice ) LEFT Outer JOIN cart_terap t ON p.codice = t.codice
WHERE u.nome ILIKE '%' AND p.pa_convenzione = 'S' AND ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or ( n.pa_drevoca Between Date( Today())-365 And Today() And n.motivo_revoca = 'S')) And p.decesso Is Null
AND (( pr_descr ILIKE '%Bronchite%' OR pr_descr ILIKE '%Sinusite%' OR addenda ILIKE '%Bronchite%' OR addenda ILIKE '%Sinusite%' ) AND l.data_open Between '2015-01-01' And '2016-03-31' AND t.data_open Between '2015-01-01' And '2016-03-31')
AND l.pb_code = t.pb_code AND t.data_open IS NOT Null
UNION
SELECT u.cognome||' '||u.nome As mmg , p.cognome , p.nome , p.nascita , p.sesso , Cast( Days( p.nascita , Today()+1)*24/8766 As SmallInt ) As eta , a.data_open , a.ac_des , a.ac_val , a.ac_tipo , '' , '3'
FROM ((( pazienti p LEFT Outer JOIN nos_002 n ON p.codice = n.codice ) LEFT Outer JOIN v_utenti u ON u.userid = n.pa_medi )
LEFT Outer JOIN cart_problemi l ON p.codice = l.codice ) LEFT Outer JOIN cart_accert a ON p.codice = a.codice
WHERE u.nome ILIKE '%' AND p.pa_convenzione = 'S' AND ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or ( n.pa_drevoca Between Date( Today())-365 And Today() And n.motivo_revoca = 'S')) And p.decesso Is Null
AND (( pr_descr ILIKE '%Bronchite%' OR pr_descr ILIKE '%Sinusite%' OR addenda ILIKE '%Bronchite%' OR addenda ILIKE '%Sinusite%' ) AND l.data_open Between '2015-01-01' And '2016-03-31' AND a.data_open Between '2015-01-01' And '2016-03-31')
AND l.pb_code = a.pb_code AND a.ac_tipo NOT IN ( '00' , 'STI' , 'EO' , '_SG' ) AND a.data_open IS NOT Null
UNION
SELECT u.cognome||' '||u.nome As mmg , p.cognome , p.nome , p.nascita , p.sesso , Cast( Days( p.nascita , Today()+1)*24/8766 As SmallInt ) As eta , d.data_open , d.de_descr , '' , '' , '' , '4'
FROM ((( pazienti p LEFT Outer JOIN nos_002 n ON p.codice = n.codice ) LEFT Outer JOIN v_utenti u ON u.userid = n.pa_medi )
LEFT Outer JOIN cart_problemi l ON p.codice = l.codice ) LEFT Outer JOIN cart_descriz d ON p.codice = d.codice
WHERE u.nome ILIKE '%' AND p.pa_convenzione = 'S' AND ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or ( n.pa_drevoca Between Date( Today())-365 And Today() And n.motivo_revoca = 'S')) And p.decesso Is Null
AND (( pr_descr ILIKE '%Bronchite%' OR pr_descr ILIKE '%Sinusite%' OR addenda ILIKE '%Bronchite%' OR addenda ILIKE '%Sinusite%' ) AND l.data_open Between '2015-01-01' And '2016-03-31' AND d.data_open Between '2015-01-01' And '2016-03-31')
AND l.pb_code = d.pb_code AND d.data_open IS NOT Null
ORDER BY 1 , 2 , 11 , 7
LIMIT 150 OFFSET 0
Sorprende invece il risultato ottenuto con la seconda query : 0 righe inserendo ( iniziali ) nome utente e/o codice regionale di un singolo MMG :
SELECT u.cognome||' '||u.nome As mmg , p.cognome , p.nome , p.nascita , p.sesso , Cast( Days( p.nascita , Today()+1)*24/8766 As SmallInt ) As eta
FROM (( pazienti p LEFT Outer JOIN nos_002 n ON p.codice = n.codice ) LEFT Outer JOIN v_utenti u ON u.userid = n.pa_medi )
WHERE u.nome ILIKE '%' AND u.codice_regionale ILIKE '%' AND p.pa_convenzione = 'S' AND ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or ( n.pa_drevoca Between Date( Today())-365 And Today() And n.motivo_revoca = 'S')) And p.decesso Is Null
apparentemente senza spiegazioni, se si utilizza almeno in parte uno dei 2 campi ottenuti con : SELECT * FROM v_utenti
Saluti , Sergio
Per la seconda anche io non capisco, ho inserito quello che mi da la query riferita alla ricerca degli utenti uguale, minuscolo, maiuscolo con %, messo LIKE al posto di Ilike risultato sempre 0... Misteri !!!
Buon fine settimana
Mario
mario shirt- Membro Junior
- Messaggi : 254
Punti : 5388
Voti per importanza dei messaggi : 4
Data d'iscrizione : 21.02.11
Età : 69
Re: query veramente complessa
Nella prima query ho semplicemente uniformato il periodo di ricerca ( da variare secondo necessità ) nelle 4 Tabelle da cui estrarre i Dati, esattamente come hai già compreso ; per la seconda query il mistero ... apparentemente persiste , una spiegazione logica sembra difficile da trovare , probabilmente il secondo Link u.userid = n.pa_medi fra nos_002 e v_utenti non funziona correttamente nella doppia giunzione fra le 3 tabelle pazienti p LEFT Outer JOIN nos_002 n ON p.codice = n.codice ) LEFT Outer JOIN v_utenti u ON u.userid = n.pa_medimario shirt ha scritto:La nuova prima query ok, ma mi spieghi cosa hai modificato e cosa cerca: cerca le terapie ai paz con diagnosi di bronchite o sinusite in qualsiasi data ma prescritta nel periodo inserito?Cervino ha scritto:...
Sorprende invece il risultato ottenuto con la seconda query : 0 righe inserendo ( iniziali ) nome utente e/o codice regionale di un singolo MMG :
SELECT u.cognome||' '||u.nome As mmg , p.cognome , p.nome , p.nascita , p.sesso , Cast( Days( p.nascita , Today()+1)*24/8766 As SmallInt ) As eta
FROM (( pazienti p LEFT Outer JOIN nos_002 n ON p.codice = n.codice ) LEFT Outer JOIN v_utenti u ON u.userid = n.pa_medi )
WHERE u.nome ILIKE '%' AND u.codice_regionale ILIKE '%' AND p.pa_convenzione = 'S' AND ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or ( n.pa_drevoca Between Date( Today())-365 And Today() And n.motivo_revoca = 'S')) And p.decesso Is Null
apparentemente senza spiegazioni, se si utilizza almeno in parte uno dei 2 campi ottenuti con : SELECT * FROM v_utenti
Saluti , Sergio
Per la seconda anche io non capisco, ho inserito quello che mi da la query riferita alla ricerca degli utenti uguale, minuscolo, maiuscolo con %, messo LIKE al posto di Ilike risultato sempre 0... Misteri !!! Buon fine settimana Mario
Per favore potresti verificare se il problema persiste anche utilizzando PgAdmin 3 o 4 ? comunque in PgAdmin il problema si puo' facilmente aggirare in vari modi , grazie . Ciao Buona Domenica Sergio
PS : la query puo' essere scritta in modo da separare i campi delle varie tabelle :
SELECT InitCap( u.cognome||' '||u.nome) As mmg , p.cognome , p.nome , p.nascita , p.sesso , Cast( Days( p.nascita , Today()+1)*24/8766 As SmallInt ) As eta , Cast( l.data_open AS Char(10)) AS pbl_inizio , pr_descr ||' , '|| Addenda As pbl , cp_code As icd9 , '' AS descr_d ,'' AS descriz , '' AS accert_d ,'' As esame , '' AS esito ,'' AS ac_tipo , '' As Terap_d , '' As Terapia , '' As n_pezzi , '' As posologia , '' As act , Cast( '1' AS SmallInt) As n_ord
FROM ((( pazienti p LEFT Outer JOIN nos_002 n ON p.codice = n.codice ) LEFT Outer JOIN v_utenti u ON u.userid = n.pa_medi )
LEFT Outer JOIN cart_problemi l ON p.codice = l.codice )
WHERE u.nome ILIKE '%' AND p.pa_convenzione = 'S' AND ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or ( n.pa_drevoca Between Date( Today())-365 And Today() And n.motivo_revoca = 'S')) And p.decesso Is Null
AND (( pr_descr ILIKE '%Bronchite%' OR pr_descr ILIKE '%Sinusite%' OR addenda ILIKE '%Bronchite%' OR addenda ILIKE '%Sinusite%' ) AND l.data_open Between '2015-01-01' And '2016-03-31' ) AND l.data_open IS NOT Null
UNION
SELECT InitCap( u.cognome||' '||u.nome) As mmg , p.cognome , p.nome , p.nascita , p.sesso , Cast( Days( p.nascita , Today()+1)*24/8766 As SmallInt ) As eta ,'','','', Cast( d.data_open AS Char(10)) , d.de_descr ,'','','','','','','','','', '2'
FROM ((( pazienti p LEFT Outer JOIN nos_002 n ON p.codice = n.codice ) LEFT Outer JOIN v_utenti u ON u.userid = n.pa_medi )
LEFT Outer JOIN cart_problemi l ON p.codice = l.codice ) LEFT Outer JOIN cart_descriz d ON p.codice = d.codice
WHERE u.nome ILIKE '%' AND p.pa_convenzione = 'S' AND ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or ( n.pa_drevoca Between Date( Today())-365 And Today() And n.motivo_revoca = 'S')) And p.decesso Is Null
AND (( pr_descr ILIKE '%Bronchite%' OR pr_descr ILIKE '%Sinusite%' OR addenda ILIKE '%Bronchite%' OR addenda ILIKE '%Sinusite%' ) AND l.data_open Between '2015-01-01' And '2016-03-31' AND d.data_open Between '2015-01-01' And '2016-03-31')
AND l.pb_code = d.pb_code AND d.data_open IS NOT Null
UNION
SELECT InitCap( u.cognome||' '||u.nome) As mmg , p.cognome , p.nome , p.nascita , p.sesso , Cast( Days( p.nascita , Today()+1)*24/8766 As SmallInt ) As eta ,'','','','','', Cast( a.data_open AS Char(10)) , a.ac_des As esame , a.ac_val AS esito, a.ac_tipo AS ac_tipo, '','','','','','3'
FROM ((( pazienti p LEFT Outer JOIN nos_002 n ON p.codice = n.codice ) LEFT Outer JOIN v_utenti u ON u.userid = n.pa_medi )
LEFT Outer JOIN cart_problemi l ON p.codice = l.codice ) LEFT Outer JOIN cart_accert a ON p.codice = a.codice
WHERE u.nome ILIKE '%' AND p.pa_convenzione = 'S' AND ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or ( n.pa_drevoca Between Date( Today())-365 And Today() And n.motivo_revoca = 'S')) And p.decesso Is Null
AND (( pr_descr ILIKE '%Bronchite%' OR pr_descr ILIKE '%Sinusite%' OR addenda ILIKE '%Bronchite%' OR addenda ILIKE '%Sinusite%' ) AND l.data_open Between '2015-01-01' And '2016-03-31' AND a.data_open Between '2015-01-01' And '2016-03-31')
AND l.pb_code = a.pb_code AND a.ac_tipo NOT IN ( '00' , 'STI' , 'EO' , '_SG' ) AND a.data_open IS NOT Null
UNION
SELECT InitCap( u.cognome||' '||u.nome) As mmg , p.cognome , p.nome , p.nascita , p.sesso , Cast( Days( p.nascita , Today()+1)*24/8766 As SmallInt ) As eta ,'','','','','','','','','', Cast( t.data_open AS Char(10)) , t.co_des , t.te_npezzi , t.po_des , t.co_atc , '4'
FROM ((( pazienti p LEFT Outer JOIN nos_002 n ON p.codice = n.codice ) LEFT Outer JOIN v_utenti u ON u.userid = n.pa_medi )
LEFT Outer JOIN cart_problemi l ON p.codice = l.codice ) LEFT Outer JOIN cart_terap t ON p.codice = t.codice
WHERE u.nome ILIKE '%' AND p.pa_convenzione = 'S' AND ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or ( n.pa_drevoca Between Date( Today())-365 And Today() And n.motivo_revoca = 'S')) And p.decesso Is Null
AND (( pr_descr ILIKE '%Bronchite%' OR pr_descr ILIKE '%Sinusite%' OR addenda ILIKE '%Bronchite%' OR addenda ILIKE '%Sinusite%' ) AND l.data_open Between '2015-01-01' And '2016-03-31' AND t.data_open Between '2015-01-01' And '2016-03-31')
AND l.pb_code = t.pb_code AND t.data_open IS NOT Null
ORDER BY 1 , 2 , 8 desc , 7 , 10 desc , 11 , 15 desc , 16 , 19 , 20
LIMIT 150 OFFSET 0
oppure in modo piu' semplice ( ma non utilizzabile con l' attuale versione di MU ) :
WITH mmg AS ( SELECT u.userid , InitCap( u.cognome||' '||u.nome ) As mmg , codice_regionale As ssr_code FROM v_utenti u WHERE nome ILIKE '%' AND codice_regionale ILike '%' ) ,
evento AS ( SELECT codice , pr_descr ||' , '|| addenda As pbl , cp_code As pbl_code , pb_code , Cast( data_open As Char(10)) As pbl_onset FROM cart_problemi WHERE userid IN ( Select userid From mmg ) AND (( pr_descr ILIKE '%Bronchite%' OR pr_descr ILIKE '%Sinusite%' OR addenda ILIKE '%Bronchite%' OR addenda ILIKE '%Sinusite%' ) AND data_open Between '2015-01-01' And '2016-03-31' )) ,
paz_ssr AS ( SELECT p.codice , p.cognome , p.nome , p.nascita , Cast( Days( p.nascita , Today()+1)*24/8766 As SmallInt ) As eta , Cast( p.sesso As Char(1)) FROM pazienti p LEFT Outer JOIN nos_002 n On p.codice = n.codice WHERE p.codice IN ( Select codice From evento ) And p.pa_convenzione = 'S' And ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or ( n.pa_drevoca Between Date( Today())-365 And Today() And n.motivo_revoca = 'S')) And p.decesso Is Null ) ,
accert AS ( SELECT a.codice ,Cast( a.data_open As Char(10)) As acc_d , a.ac_des As accert , a.ac_val As acc_v , ac_tipo FROM cart_accert a WHERE a.codice IN ( Select codice From evento ) AND pb_code IN ( Select pb_code From evento ) AND ac_tipo NOT IN ( '00' , 'STI' , 'EO' , '_SG' ) AND a.data_open Between '2015-01-01' And '2016-03-31' ) ,
diario AS ( SELECT codice , Cast( data_open As Char(10)) As diario_d , de_descr As diario FROM cart_descriz WHERE codice IN ( Select codice From evento ) AND pb_code IN ( Select pb_code From evento ) AND data_open Between '2015-01-01' And '2016-03-31' ) ,
terapia AS ( SELECT codice , Cast( data_open As Char(10)) As terap_d , co_des As drug , te_npezzi As n_pezzi , po_des As posologia , co_atc As atc , pb_code FROM cart_terap WHERE codice IN ( Select codice From paz_ssr) AND pb_code IN ( Select pb_code From evento ) AND data_open Between '2015-01-01' And '2016-03-31' )
SELECT (Select mmg From mmg ) As mmg , cognome , nome , nascita , sesso , eta , pbl_onset , pbl , pbl_code , '' As diario_d , '' AS diario , '' As acc_d ,'' As accert ,'' As acc_v , '' As ac_tipo , '' As terap_d, '' As drug ,'' As n_pezzi, '' As posologia ,'' As atc
FROM paz_ssr p LEFT JOIN evento l ON p.codice = l.codice WHERE pbl_onset IS Not Null
UNION
SELECT (Select mmg From mmg ) As mmg , cognome , nome , nascita , sesso , eta ,'','','', diario_d , diario, '','','','','','','','',''
FROM paz_ssr p LEFT JOIN diario d ON p.codice = d.codice WHERE diario_d IS Not Null
UNION
SELECT (Select mmg From mmg ) As mmg , cognome , nome , nascita , sesso , eta ,'','','','','', acc_d , accert , acc_v , ac_tipo ,'','','','',''
FROM paz_ssr p LEFT JOIN accert a ON p.codice = a.codice WHERE acc_d IS Not Null
UNION
SELECT (Select mmg From mmg ) As mmg , cognome , nome , nascita , sesso , eta ,'','','','','','','','','', terap_d , drug , n_pezzi , posologia , atc
FROM paz_ssr p LEFT JOIN terapia t ON p.codice = t.codice WHERE terap_d IS Not Null
ORDER BY 1 , 2 , 7 desc , 10 desc , 12 desc , 16 desc
Cervino- Membro Junior
- Messaggi : 245
Punti : 5280
Voti per importanza dei messaggi : 22
Data d'iscrizione : 03.03.11
Età : 70
Località : Orzivecchi (BS)
Re: query veramente complessa
Cervino ha scritto:Nella prima query ho semplicemente uniformato il periodo di ricerca ( da variare secondo necessità ) nelle 4 Tabelle da cui estrarre i Dati, esattamente come hai già compreso ; per la seconda query il mistero ... apparentemente persiste , una spiegazione logica sembra difficile da trovare , probabilmente il secondo Link u.userid = n.pa_medi fra nos_002 e v_utenti non funziona correttamente nella doppia giunzione fra le 3 tabelle pazienti p LEFT Outer JOIN nos_002 n ON p.codice = n.codice ) LEFT Outer JOIN v_utenti u ON u.userid = n.pa_medimario shirt ha scritto:La nuova prima query ok, ma mi spieghi cosa hai modificato e cosa cerca: cerca le terapie ai paz con diagnosi di bronchite o sinusite in qualsiasi data ma prescritta nel periodo inserito?Cervino ha scritto:...
Sorprende invece il risultato ottenuto con la seconda query : 0 righe inserendo ( iniziali ) nome utente e/o codice regionale di un singolo MMG :
SELECT u.cognome||' '||u.nome As mmg , p.cognome , p.nome , p.nascita , p.sesso , Cast( Days( p.nascita , Today()+1)*24/8766 As SmallInt ) As eta
FROM (( pazienti p LEFT Outer JOIN nos_002 n ON p.codice = n.codice ) LEFT Outer JOIN v_utenti u ON u.userid = n.pa_medi )
WHERE u.nome ILIKE '%' AND u.codice_regionale ILIKE '%' AND p.pa_convenzione = 'S' AND ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or ( n.pa_drevoca Between Date( Today())-365 And Today() And n.motivo_revoca = 'S')) And p.decesso Is Null
apparentemente senza spiegazioni, se si utilizza almeno in parte uno dei 2 campi ottenuti con : SELECT * FROM v_utenti
Saluti , Sergio
Per la seconda anche io non capisco, ho inserito quello che mi da la query riferita alla ricerca degli utenti uguale, minuscolo, maiuscolo con %, messo LIKE al posto di Ilike risultato sempre 0... Misteri !!! Buon fine settimana Mario
Per favore potresti verificare se il problema persiste anche utilizzando PgAdmin 3 o 4 ? comunque in PgAdmin il problema si puo' facilmente aggirare in vari modi , grazie . Ciao Buona Domenica Sergio
Sergio ho provato con copia e incolla su PgAdmin 3, il mio MW di casa e' monoutente e la query mi ha dato tutti i miei paz. Inserendo il cognome al posto del nome mi ha dato risultato 0, mettendo cod regionale o nome giusto l'elenco e' venuto..
Mario
mario shirt- Membro Junior
- Messaggi : 254
Punti : 5388
Voti per importanza dei messaggi : 4
Data d'iscrizione : 21.02.11
Età : 69
Re: query veramente complessa
Cervino ha scritto:
oppure in modo piu' semplice ( ma non utilizzabile con l' attuale versione di MU ) :
WITH mmg AS ( SELECT u.userid , InitCap( u.cognome||' '||u.nome ) As mmg , codice_regionale As ssr_code FROM v_utenti u WHERE nome ILIKE '%' AND codice_regionale ILike '%' ) ,
evento AS ( SELECT codice , pr_descr ||' , '|| addenda As pbl , cp_code As pbl_code , pb_code , Cast( data_open As Char(10)) As pbl_onset FROM cart_problemi WHERE userid IN ( Select userid From mmg ) AND (( pr_descr ILIKE '%Bronchite%' OR pr_descr ILIKE '%Sinusite%' OR addenda ILIKE '%Bronchite%' OR addenda ILIKE '%Sinusite%' ) AND data_open Between '2015-01-01' And '2016-03-31' )) ,
paz_ssr AS ( SELECT p.codice , p.cognome , p.nome , p.nascita , Cast( Days( p.nascita , Today()+1)*24/8766 As SmallInt ) As eta , Cast( p.sesso As Char(1)) FROM pazienti p LEFT Outer JOIN nos_002 n On p.codice = n.codice WHERE p.codice IN ( Select codice From evento ) And p.pa_convenzione = 'S' And ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or ( n.pa_drevoca Between Date( Today())-365 And Today() And n.motivo_revoca = 'S')) And p.decesso Is Null ) ,
accert AS ( SELECT a.codice ,Cast( a.data_open As Char(10)) As acc_d , a.ac_des As accert , a.ac_val As acc_v , ac_tipo FROM cart_accert a WHERE a.codice IN ( Select codice From evento ) AND pb_code IN ( Select pb_code From evento ) AND ac_tipo NOT IN ( '00' , 'STI' , 'EO' , '_SG' ) AND a.data_open Between '2015-01-01' And '2016-03-31' ) ,
diario AS ( SELECT codice , Cast( data_open As Char(10)) As diario_d , de_descr As diario FROM cart_descriz WHERE codice IN ( Select codice From evento ) AND pb_code IN ( Select pb_code From evento ) AND data_open Between '2015-01-01' And '2016-03-31' ) ,
terapia AS ( SELECT codice , Cast( data_open As Char(10)) As terap_d , co_des As drug , te_npezzi As n_pezzi , po_des As posologia , co_atc As atc , pb_code FROM cart_terap WHERE codice IN ( Select codice From paz_ssr) AND pb_code IN ( Select pb_code From evento ) AND data_open Between '2015-01-01' And '2016-03-31' )
SELECT (Select mmg From mmg ) As mmg , cognome , nome , nascita , sesso , eta , pbl_onset , pbl , pbl_code , '' As diario_d , '' AS diario , '' As acc_d ,'' As accert ,'' As acc_v , '' As ac_tipo , '' As terap_d, '' As drug ,'' As n_pezzi, '' As posologia ,'' As atc
FROM paz_ssr p LEFT JOIN evento l ON p.codice = l.codice WHERE pbl_onset IS Not Null
UNION
SELECT (Select mmg From mmg ) As mmg , cognome , nome , nascita , sesso , eta ,'','','', diario_d , diario, '','','','','','','','',''
FROM paz_ssr p LEFT JOIN diario d ON p.codice = d.codice WHERE diario_d IS Not Null
UNION
SELECT (Select mmg From mmg ) As mmg , cognome , nome , nascita , sesso , eta ,'','','','','', acc_d , accert , acc_v , ac_tipo ,'','','','',''
FROM paz_ssr p LEFT JOIN accert a ON p.codice = a.codice WHERE acc_d IS Not Null
UNION
SELECT (Select mmg From mmg ) As mmg , cognome , nome , nascita , sesso , eta ,'','','','','','','','','', terap_d , drug , n_pezzi , posologia , atc
FROM paz_ssr p LEFT JOIN terapia t ON p.codice = t.codice WHERE terap_d IS Not Null
ORDER BY 1 , 2 , 7 desc , 10 desc , 12 desc , 16 desc
Questa non va con MU ma anche con PgAdmin mi da:
ERRORE: più di una riga restituita da una sottoquery usata come espressione
Stato SQL: 21000
Mario
mario shirt- Membro Junior
- Messaggi : 254
Punti : 5388
Voti per importanza dei messaggi : 4
Data d'iscrizione : 21.02.11
Età : 69
Re: query veramente complessa
Grazie per le prove ; nel mio caso funzionano perfettamente, restituendo lo stesso numero di righe sia in MU che in PgAdmin ; comunque l' unica subquery dovrebbe essere :
SELECT (Select mmg From mmg ) As mmg , ... e sicuramente in caso di ricerca in un MillePS MultiUtente dovrebbe dare errore ;
proverei a rieseguire la prima parte della query :
WITH mmg AS ( SELECT u.userid , InitCap( u.cognome||' '||u.nome ) As mmg_n , codice_regionale As ssr_code FROM v_utenti u WHERE nome ILIKE '%' AND codice_regionale ILike '%' ) ,
evento AS ( SELECT codice , pr_descr ||' , '|| addenda As pbl , cp_code As pbl_code , pb_code , Cast( data_open As Char(10)) As pbl_onset FROM cart_problemi WHERE userid IN ( Select userid From mmg ) AND (( pr_descr ILIKE '%Bronchite%' OR pr_descr ILIKE '%Sinusite%' OR addenda ILIKE '%Bronchite%' OR addenda ILIKE '%Sinusite%' ) AND data_open Between '2015-01-01' And '2016-03-31' )) ,
paz_ssr AS ( SELECT p.codice , p.cognome , p.nome , p.nascita , Cast( Days( p.nascita , Today()+1)*24/8766 As SmallInt ) As eta , Cast( p.sesso As Char(1)) FROM pazienti p LEFT Outer JOIN nos_002 n On p.codice = n.codice WHERE p.codice IN ( Select codice From evento ) And p.pa_convenzione = 'S' And ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or ( n.pa_drevoca Between Date( Today())-365 And Today() And n.motivo_revoca = 'S')) And p.decesso Is Null )
SELECT (Select mmg_n From mmg ) As mmg_n , cognome , nome , nascita , sesso , eta , pbl_onset , pbl , pbl_code , '' As diario_d , '' AS diario , '' As acc_d ,'' As accert ,'' As acc_v , '' As ac_tipo , '' As terap_d, '' As drug ,'' As n_pezzi, '' As posologia ,'' As atc
FROM paz_ssr p LEFT JOIN evento l ON p.codice = l.codice WHERE pbl_onset IS Not Null
ORDER BY 1 , 2
se l' errore persiste , proverei ad inserire le iniziali di nome Utente o codice_regionale ; se per caso il problema si risolve , eseguire la query completa
WITH mmg AS ( SELECT u.userid , InitCap( u.cognome||' '||u.nome ) As mmg_n , codice_regionale As ssr_code FROM v_utenti u WHERE nome ILIKE '%' AND codice_regionale ILike '%' ) ,
evento AS ( SELECT codice , pr_descr ||' , '|| addenda As pbl , cp_code As pbl_code , pb_code , Cast( data_open As Char(10)) As pbl_onset FROM cart_problemi WHERE userid IN ( Select userid From mmg ) AND (( pr_descr ILIKE '%Bronchite%' OR pr_descr ILIKE '%Sinusite%' OR addenda ILIKE '%Bronchite%' OR addenda ILIKE '%Sinusite%' ) AND data_open Between '2015-01-01' And '2016-03-31' )) ,
paz_ssr AS ( SELECT p.codice , p.cognome , p.nome , p.nascita , Cast( Days( p.nascita , Today()+1)*24/8766 As SmallInt ) As eta , Cast( p.sesso As Char(1)) FROM pazienti p LEFT Outer JOIN nos_002 n On p.codice = n.codice WHERE p.codice IN ( Select codice From evento ) And p.pa_convenzione = 'S' And ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or ( n.pa_drevoca Between Date( Today())-365 And Today() And n.motivo_revoca = 'S')) And p.decesso Is Null ) ,
accert AS ( SELECT a.codice ,Cast( a.data_open As Char(10)) As acc_d , a.ac_des As accert , a.ac_val As acc_v , ac_tipo FROM cart_accert a WHERE a.codice IN ( Select codice From evento ) AND pb_code IN ( Select pb_code From evento ) AND ac_tipo NOT IN ( '00' , 'STI' , 'EO' , '_SG' ) AND a.data_open Between '2015-01-01' And '2016-03-31' ) ,
diario AS ( SELECT codice , Cast( data_open As Char(10)) As diario_d , de_descr As diario FROM cart_descriz WHERE codice IN ( Select codice From evento ) AND pb_code IN ( Select pb_code From evento ) AND data_open Between '2015-01-01' And '2016-03-31' ) ,
terapia AS ( SELECT codice , Cast( data_open As Char(10)) As terap_d , co_des As drug , te_npezzi As n_pezzi , po_des As posologia , co_atc As atc , pb_code FROM cart_terap WHERE codice IN ( Select codice From paz_ssr) AND pb_code IN ( Select pb_code From evento ) AND data_open Between '2015-01-01' And '2016-03-31' )
SELECT (Select mmg_n From mmg ) As mmg_n , cognome , nome , nascita , sesso , eta , pbl_onset , pbl , pbl_code , '' As diario_d , '' AS diario , '' As acc_d ,'' As accert ,'' As acc_v , '' As ac_tipo , '' As terap_d, '' As drug ,'' As n_pezzi, '' As posologia ,'' As atc
FROM paz_ssr p LEFT JOIN evento l ON p.codice = l.codice WHERE pbl_onset IS Not Null
UNION
SELECT (Select mmg_n From mmg ) As mmg_n , cognome , nome , nascita , sesso , eta ,'','','', diario_d , diario, '','','','','','','','',''
FROM paz_ssr p LEFT JOIN diario d ON p.codice = d.codice WHERE diario_d IS Not Null
UNION
SELECT (Select mmg_n From mmg ) As mmg_n , cognome , nome , nascita , sesso , eta ,'','','','','', acc_d , accert , acc_v , ac_tipo ,'','','','',''
FROM paz_ssr p LEFT JOIN accert a ON p.codice = a.codice WHERE acc_d IS Not Null
UNION
SELECT (Select mmg_n From mmg ) As mmg_n , cognome , nome , nascita , sesso , eta ,'','','','','','','','','', terap_d , drug , n_pezzi , posologia , atc
FROM paz_ssr p LEFT JOIN terapia t ON p.codice = t.codice WHERE terap_d IS Not Null
ORDER BY 1 , 2 , 7 desc , 10 desc , 12 desc , 16 desc
Concludendo purtroppo versioni diverse di MW e MU non sono perfettamente compatibili fra loro , pur avendo quasi la stessa struttura o schema di database riguardo alle interrogazioni tramite SQL ; inoltre MillePS MonoUtente e MultiUtente sembrano avere sorprendentemente, differenze rilevanti nel gestione del Link fra Medico e Paziente , con rilevante interferenza nelle indagini statistiche : situazione sconfortante ed alquanto disagevole per Tutti Noi Utenti
Saluti , Sergio
SELECT (Select mmg From mmg ) As mmg , ... e sicuramente in caso di ricerca in un MillePS MultiUtente dovrebbe dare errore ;
proverei a rieseguire la prima parte della query :
WITH mmg AS ( SELECT u.userid , InitCap( u.cognome||' '||u.nome ) As mmg_n , codice_regionale As ssr_code FROM v_utenti u WHERE nome ILIKE '%' AND codice_regionale ILike '%' ) ,
evento AS ( SELECT codice , pr_descr ||' , '|| addenda As pbl , cp_code As pbl_code , pb_code , Cast( data_open As Char(10)) As pbl_onset FROM cart_problemi WHERE userid IN ( Select userid From mmg ) AND (( pr_descr ILIKE '%Bronchite%' OR pr_descr ILIKE '%Sinusite%' OR addenda ILIKE '%Bronchite%' OR addenda ILIKE '%Sinusite%' ) AND data_open Between '2015-01-01' And '2016-03-31' )) ,
paz_ssr AS ( SELECT p.codice , p.cognome , p.nome , p.nascita , Cast( Days( p.nascita , Today()+1)*24/8766 As SmallInt ) As eta , Cast( p.sesso As Char(1)) FROM pazienti p LEFT Outer JOIN nos_002 n On p.codice = n.codice WHERE p.codice IN ( Select codice From evento ) And p.pa_convenzione = 'S' And ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or ( n.pa_drevoca Between Date( Today())-365 And Today() And n.motivo_revoca = 'S')) And p.decesso Is Null )
SELECT (Select mmg_n From mmg ) As mmg_n , cognome , nome , nascita , sesso , eta , pbl_onset , pbl , pbl_code , '' As diario_d , '' AS diario , '' As acc_d ,'' As accert ,'' As acc_v , '' As ac_tipo , '' As terap_d, '' As drug ,'' As n_pezzi, '' As posologia ,'' As atc
FROM paz_ssr p LEFT JOIN evento l ON p.codice = l.codice WHERE pbl_onset IS Not Null
ORDER BY 1 , 2
se l' errore persiste , proverei ad inserire le iniziali di nome Utente o codice_regionale ; se per caso il problema si risolve , eseguire la query completa
WITH mmg AS ( SELECT u.userid , InitCap( u.cognome||' '||u.nome ) As mmg_n , codice_regionale As ssr_code FROM v_utenti u WHERE nome ILIKE '%' AND codice_regionale ILike '%' ) ,
evento AS ( SELECT codice , pr_descr ||' , '|| addenda As pbl , cp_code As pbl_code , pb_code , Cast( data_open As Char(10)) As pbl_onset FROM cart_problemi WHERE userid IN ( Select userid From mmg ) AND (( pr_descr ILIKE '%Bronchite%' OR pr_descr ILIKE '%Sinusite%' OR addenda ILIKE '%Bronchite%' OR addenda ILIKE '%Sinusite%' ) AND data_open Between '2015-01-01' And '2016-03-31' )) ,
paz_ssr AS ( SELECT p.codice , p.cognome , p.nome , p.nascita , Cast( Days( p.nascita , Today()+1)*24/8766 As SmallInt ) As eta , Cast( p.sesso As Char(1)) FROM pazienti p LEFT Outer JOIN nos_002 n On p.codice = n.codice WHERE p.codice IN ( Select codice From evento ) And p.pa_convenzione = 'S' And ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or ( n.pa_drevoca Between Date( Today())-365 And Today() And n.motivo_revoca = 'S')) And p.decesso Is Null ) ,
accert AS ( SELECT a.codice ,Cast( a.data_open As Char(10)) As acc_d , a.ac_des As accert , a.ac_val As acc_v , ac_tipo FROM cart_accert a WHERE a.codice IN ( Select codice From evento ) AND pb_code IN ( Select pb_code From evento ) AND ac_tipo NOT IN ( '00' , 'STI' , 'EO' , '_SG' ) AND a.data_open Between '2015-01-01' And '2016-03-31' ) ,
diario AS ( SELECT codice , Cast( data_open As Char(10)) As diario_d , de_descr As diario FROM cart_descriz WHERE codice IN ( Select codice From evento ) AND pb_code IN ( Select pb_code From evento ) AND data_open Between '2015-01-01' And '2016-03-31' ) ,
terapia AS ( SELECT codice , Cast( data_open As Char(10)) As terap_d , co_des As drug , te_npezzi As n_pezzi , po_des As posologia , co_atc As atc , pb_code FROM cart_terap WHERE codice IN ( Select codice From paz_ssr) AND pb_code IN ( Select pb_code From evento ) AND data_open Between '2015-01-01' And '2016-03-31' )
SELECT (Select mmg_n From mmg ) As mmg_n , cognome , nome , nascita , sesso , eta , pbl_onset , pbl , pbl_code , '' As diario_d , '' AS diario , '' As acc_d ,'' As accert ,'' As acc_v , '' As ac_tipo , '' As terap_d, '' As drug ,'' As n_pezzi, '' As posologia ,'' As atc
FROM paz_ssr p LEFT JOIN evento l ON p.codice = l.codice WHERE pbl_onset IS Not Null
UNION
SELECT (Select mmg_n From mmg ) As mmg_n , cognome , nome , nascita , sesso , eta ,'','','', diario_d , diario, '','','','','','','','',''
FROM paz_ssr p LEFT JOIN diario d ON p.codice = d.codice WHERE diario_d IS Not Null
UNION
SELECT (Select mmg_n From mmg ) As mmg_n , cognome , nome , nascita , sesso , eta ,'','','','','', acc_d , accert , acc_v , ac_tipo ,'','','','',''
FROM paz_ssr p LEFT JOIN accert a ON p.codice = a.codice WHERE acc_d IS Not Null
UNION
SELECT (Select mmg_n From mmg ) As mmg_n , cognome , nome , nascita , sesso , eta ,'','','','','','','','','', terap_d , drug , n_pezzi , posologia , atc
FROM paz_ssr p LEFT JOIN terapia t ON p.codice = t.codice WHERE terap_d IS Not Null
ORDER BY 1 , 2 , 7 desc , 10 desc , 12 desc , 16 desc
Concludendo purtroppo versioni diverse di MW e MU non sono perfettamente compatibili fra loro , pur avendo quasi la stessa struttura o schema di database riguardo alle interrogazioni tramite SQL ; inoltre MillePS MonoUtente e MultiUtente sembrano avere sorprendentemente, differenze rilevanti nel gestione del Link fra Medico e Paziente , con rilevante interferenza nelle indagini statistiche : situazione sconfortante ed alquanto disagevole per Tutti Noi Utenti
Saluti , Sergio
Cervino- Membro Junior
- Messaggi : 245
Punti : 5280
Voti per importanza dei messaggi : 22
Data d'iscrizione : 03.03.11
Età : 70
Località : Orzivecchi (BS)
Re: query veramente complessa
Negativo . sempre 0 su MW multiutente. Provero' a casa sul monoutente..Cervino ha scritto:Grazie per le prove ; nel mio caso funzionano perfettamente, restituendo lo stesso numero di righe sia in MU che in PgAdmin ; comunque l' unica subquery dovrebbe essere :
SELECT (Select mmg From mmg ) As mmg , ... e sicuramente in caso di ricerca in un MillePS MultiUtente dovrebbe dare errore ;
proverei a rieseguire la prima parte della query :
WITH mmg AS ( SELECT u.userid , InitCap( u.cognome||' '||u.nome ) As mmg_n , codice_regionale As ssr_code FROM v_utenti u WHERE nome ILIKE '%' AND codice_regionale ILike '%' ) ,
evento AS ( SELECT codice , pr_descr ||' , '|| addenda As pbl , cp_code As pbl_code , pb_code , Cast( data_open As Char(10)) As pbl_onset FROM cart_problemi WHERE userid IN ( Select userid From mmg ) AND (( pr_descr ILIKE '%Bronchite%' OR pr_descr ILIKE '%Sinusite%' OR addenda ILIKE '%Bronchite%' OR addenda ILIKE '%Sinusite%' ) AND data_open Between '2015-01-01' And '2016-03-31' )) ,
paz_ssr AS ( SELECT p.codice , p.cognome , p.nome , p.nascita , Cast( Days( p.nascita , Today()+1)*24/8766 As SmallInt ) As eta , Cast( p.sesso As Char(1)) FROM pazienti p LEFT Outer JOIN nos_002 n On p.codice = n.codice WHERE p.codice IN ( Select codice From evento ) And p.pa_convenzione = 'S' And ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or ( n.pa_drevoca Between Date( Today())-365 And Today() And n.motivo_revoca = 'S')) And p.decesso Is Null )
SELECT (Select mmg_n From mmg ) As mmg_n , cognome , nome , nascita , sesso , eta , pbl_onset , pbl , pbl_code , '' As diario_d , '' AS diario , '' As acc_d ,'' As accert ,'' As acc_v , '' As ac_tipo , '' As terap_d, '' As drug ,'' As n_pezzi, '' As posologia ,'' As atc
FROM paz_ssr p LEFT JOIN evento l ON p.codice = l.codice WHERE pbl_onset IS Not Null
ORDER BY 1 , 2
se l' errore persiste , proverei ad inserire le iniziali di nome Utente o codice_regionale ; se per caso il problema si risolve , eseguire la query completa
Mario
mario shirt- Membro Junior
- Messaggi : 254
Punti : 5388
Voti per importanza dei messaggi : 4
Data d'iscrizione : 21.02.11
Età : 69
Re: query veramente complessa
negativo anche a casa monoutente, sempre 0.mario shirt ha scritto:Negativo . sempre 0 su MW multiutente. Provero' a casa sul monoutente..Cervino ha scritto:Grazie per le prove ; nel mio caso funzionano perfettamente, restituendo lo stesso numero di righe sia in MU che in PgAdmin ; comunque l' unica subquery dovrebbe essere :
SELECT (Select mmg From mmg ) As mmg , ... e sicuramente in caso di ricerca in un MillePS MultiUtente dovrebbe dare errore ;
proverei a rieseguire la prima parte della query :
WITH mmg AS ( SELECT u.userid , InitCap( u.cognome||' '||u.nome ) As mmg_n , codice_regionale As ssr_code FROM v_utenti u WHERE nome ILIKE '%' AND codice_regionale ILike '%' ) ,
evento AS ( SELECT codice , pr_descr ||' , '|| addenda As pbl , cp_code As pbl_code , pb_code , Cast( data_open As Char(10)) As pbl_onset FROM cart_problemi WHERE userid IN ( Select userid From mmg ) AND (( pr_descr ILIKE '%Bronchite%' OR pr_descr ILIKE '%Sinusite%' OR addenda ILIKE '%Bronchite%' OR addenda ILIKE '%Sinusite%' ) AND data_open Between '2015-01-01' And '2016-03-31' )) ,
paz_ssr AS ( SELECT p.codice , p.cognome , p.nome , p.nascita , Cast( Days( p.nascita , Today()+1)*24/8766 As SmallInt ) As eta , Cast( p.sesso As Char(1)) FROM pazienti p LEFT Outer JOIN nos_002 n On p.codice = n.codice WHERE p.codice IN ( Select codice From evento ) And p.pa_convenzione = 'S' And ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or ( n.pa_drevoca Between Date( Today())-365 And Today() And n.motivo_revoca = 'S')) And p.decesso Is Null )
SELECT (Select mmg_n From mmg ) As mmg_n , cognome , nome , nascita , sesso , eta , pbl_onset , pbl , pbl_code , '' As diario_d , '' AS diario , '' As acc_d ,'' As accert ,'' As acc_v , '' As ac_tipo , '' As terap_d, '' As drug ,'' As n_pezzi, '' As posologia ,'' As atc
FROM paz_ssr p LEFT JOIN evento l ON p.codice = l.codice WHERE pbl_onset IS Not Null
ORDER BY 1 , 2
se l' errore persiste , proverei ad inserire le iniziali di nome Utente o codice_regionale ; se per caso il problema si risolve , eseguire la query completa
Mario
Mario
mario shirt- Membro Junior
- Messaggi : 254
Punti : 5388
Voti per importanza dei messaggi : 4
Data d'iscrizione : 21.02.11
Età : 69
query veramente complessa
buona sera purtroppo anche a me da sempre zero
nanci giacinto- Membro Junior
- Messaggi : 128
Punti : 5208
Voti per importanza dei messaggi : -1
Data d'iscrizione : 02.03.11
Argomenti simili
» Query per diabetici
» Un consiglio prima di acquistare una nuova stampante veramente compatibile con millewin!
» esenzione E05 regione Piemonte
» query valsartan
» query con le viste
» Un consiglio prima di acquistare una nuova stampante veramente compatibile con millewin!
» esenzione E05 regione Piemonte
» query valsartan
» query con le viste
Permessi in questa sezione del forum:
Non puoi rispondere agli argomenti in questo forum.