doppia aggregazione e frequenza
5 partecipanti
Pagina 1 di 2
Pagina 1 di 2 • 1, 2
doppia aggregazione e frequenza
Salve dovrei estrarre da un server di otto medici collegati in rete (associazione MEDIASS) gli assistiti con cardiopatia ischemica (codici da 410 a 414) e angioplastica (v45.82), il loro betabloccante e la loro doppia aggregazione (fondamentalmente cardioaspirina e clopidrogel) e infine anche la frequenza cardiaca. So estrarre i dati da una sola vista per come implementata su millewin. Non funziona bene l'impiego di WHERE per collegare due o più' tabelle in una tabella finale per come illustrato nella guida millewin al linguaggio SQL. Non so usare le query con le tabelle e sono quindi bloccato. Grazie in anticipo alle anime buone.
Infine perché questa query:
SELECT cognome, nome, atc
FROM v_terapie
WHERE ATC like 'B01AC04' and atc like 'b01ac06'
mi da risultato zero quando nel mio archivio ci sono gli assistiti con doppia aggregazione? grazie ancora. Ma non esiste una guida all'uso delle tabelle?.
Infine perché questa query:
SELECT cognome, nome, atc
FROM v_terapie
WHERE ATC like 'B01AC04' and atc like 'b01ac06'
mi da risultato zero quando nel mio archivio ci sono gli assistiti con doppia aggregazione? grazie ancora. Ma non esiste una guida all'uso delle tabelle?.
nanci giacinto- Membro Junior
- Messaggi : 128
Punti : 5209
Voti per importanza dei messaggi : -1
Data d'iscrizione : 02.03.11
Re: doppia aggregazione e frequenza
Ciao, ti rispondo al quesito sulla query perchè è rapido, se non avrai risposta nei prossimi giorni ti posto la query
FROM v_terapie
WHERE ATC like 'B01AC04' and atc like 'b01ac06'
ti dà 0 perchè i codice ATC che viene testato non può essere contemporaneamente uguale a 'B01AC04' e a'b01ac06',
con WHERE ATC like 'B01AC04' OR atc like 'b01ac06' estrai i pazienti che hanno solo il codice 1, solo il codice 2 o entrambi.
Per estrarre i pazienti che hanno entrambi i codici devi fare
FROM v_terapie a, v_terapie b
WHERE a.ATC like 'B01AC04' and b.atc like 'b01ac06'
così estrae la presenza contemporanea dei due codici
gimpiero
FROM v_terapie
WHERE ATC like 'B01AC04' and atc like 'b01ac06'
ti dà 0 perchè i codice ATC che viene testato non può essere contemporaneamente uguale a 'B01AC04' e a'b01ac06',
con WHERE ATC like 'B01AC04' OR atc like 'b01ac06' estrai i pazienti che hanno solo il codice 1, solo il codice 2 o entrambi.
Per estrarre i pazienti che hanno entrambi i codici devi fare
FROM v_terapie a, v_terapie b
WHERE a.ATC like 'B01AC04' and b.atc like 'b01ac06'
così estrae la presenza contemporanea dei due codici
gimpiero
GiampiMaz- Membro Junior
- Messaggi : 122
Punti : 5187
Voti per importanza dei messaggi : 33
Data d'iscrizione : 20.02.11
doppia aggregazione
Grazie per il consiglio ma questa query mi da sempre zero
SELECT cognome, nome, atc
FROM v_terapie a, v_terapie b
WHERE a.atc like 'b01ac04' and b.atc like 'b01ac06'
Mi da altrettanto zero quest'altra query
SELECT DISTINCT v_terapie.cognome, v_terapie.nome, V_terapie.atc, v_terapie.terapia, v_pressione.frequenza
FROM v_terapie, v_pressione
WHERE v_terapie.codice = v_pressione.codice and v_terapie.atc like 'B01AC04' and v_terapie.atc like 'B01AC06'
Io preferirei una query con le tabelle e non con le viste. grazie
SELECT cognome, nome, atc
FROM v_terapie a, v_terapie b
WHERE a.atc like 'b01ac04' and b.atc like 'b01ac06'
Mi da altrettanto zero quest'altra query
SELECT DISTINCT v_terapie.cognome, v_terapie.nome, V_terapie.atc, v_terapie.terapia, v_pressione.frequenza
FROM v_terapie, v_pressione
WHERE v_terapie.codice = v_pressione.codice and v_terapie.atc like 'B01AC04' and v_terapie.atc like 'B01AC06'
Io preferirei una query con le tabelle e non con le viste. grazie
nanci giacinto- Membro Junior
- Messaggi : 128
Punti : 5209
Voti per importanza dei messaggi : -1
Data d'iscrizione : 02.03.11
Re: doppia aggregazione e frequenza
Be' non voleva essere una query...
prova
SELECT distinct a.cognome, a.nome, a.atc, b.atc
FROM v_terapie a, v_terapie b
WHERE
a.codice=b.codice
and a.atc like 'b01ac04' and b.atc like 'b01ac06'
selezionando da centrale statistiche un congruo intervallo di tempo
gp
prova
SELECT distinct a.cognome, a.nome, a.atc, b.atc
FROM v_terapie a, v_terapie b
WHERE
a.codice=b.codice
and a.atc like 'b01ac04' and b.atc like 'b01ac06'
selezionando da centrale statistiche un congruo intervallo di tempo
gp
GiampiMaz- Membro Junior
- Messaggi : 122
Punti : 5187
Voti per importanza dei messaggi : 33
Data d'iscrizione : 20.02.11
Re: doppia aggregazione e frequenza
ok funzionaGiampiMaz ha scritto:Be' non voleva essere una query...
prova
SELECT distinct a.cognome, a.nome, a.atc, b.atc
FROM v_terapie a, v_terapie b
WHERE
a.codice=b.codice
and a.atc like 'b01ac04' and b.atc like 'b01ac06'
selezionando da centrale statistiche un congruo intervallo di tempo
gp
Mario
Quindi se si vuole che 3 o piu' atc siano presenti contemporaneamente basta aggiungere c.atc , c.codice e c.atc like "bbb"?
mario shirt- Membro Junior
- Messaggi : 254
Punti : 5389
Voti per importanza dei messaggi : 4
Data d'iscrizione : 21.02.11
Età : 69
doppia aggregazione frequenza
Grazie caro Giampimaz. Quanto hai scritto vale anche per la seconda query che dovrebbe servire per estrarre dati da due tabelle? grazie ancora ciao
nanci giacinto- Membro Junior
- Messaggi : 128
Punti : 5209
Voti per importanza dei messaggi : -1
Data d'iscrizione : 02.03.11
doppia aggregazione + frequenza
Salve fatta così la query si blocca, e poi come fare ad aggiungere la frequenza cardiaca e la diagnosi di cardiopatia ischemica (codici icd9 410...414 e v.45.82)?
SELECT distinct a.cognome, a.nome, a.atc, b.atc, c.atc
FROM v_terapie a, v_terapie b, v_terapie c,
WHERE
a.codice=b.codice and a.codice = c.codice and b.codice = c.codice
and a.atc like 'b01ac04' and b.atc like 'b01ac06' and c.atc like 'co7ab%%'
SELECT distinct a.cognome, a.nome, a.atc, b.atc, c.atc
FROM v_terapie a, v_terapie b, v_terapie c,
WHERE
a.codice=b.codice and a.codice = c.codice and b.codice = c.codice
and a.atc like 'b01ac04' and b.atc like 'b01ac06' and c.atc like 'co7ab%%'
nanci giacinto- Membro Junior
- Messaggi : 128
Punti : 5209
Voti per importanza dei messaggi : -1
Data d'iscrizione : 02.03.11
Re: doppia aggregazione e frequenza
Questa query (con le tabelle, con le viste non sono a mio agio) seleziona i pazienti con cardiopatia ischemica e angioplastica che negli ultimi 6 mesi hanno prescrizioni sia di aspirina che di clopidogrel.
Mostra quindi l'eventuale betabloccante usato nell'ultimo anno e l'ultima frequenza cardiaca registrata.
in AND n.pa_medi like '%' va messo il solito codice per la medicina di gruppo
giampiero
Per renderla più precisa, comprendere anche altri antiaggreganti, andrebbe perfezionata, intanto vedi se ti funziona.
select distinct p.cognome, p.nome, days(p.nascita, today())/365 eta, p.sesso sesso,
(select list (distinct x.co_des) from cart_terap x where p.codice=x.codice and x.co_atc like 'C07%' and x.data_open > today() - 365) AS beta_bloc,
(select pa.frequenza from cart_press pa where p.codice=pa.codice and
pa.frequenza Is Not Null And Not Exists (Select a1.codice From cart_press a1
Where pa.codice = a1.codice And (a1.data_open > pa.data_open
Or (a1.data_open = pa.data_open And a1.rowid>pa.rowid)) And a1.frequenza is Not Null) ) AS Frequenza
from pazienti p, nos_002 n
where
p.codice=n.codice
and p.codice IN (select x.codice from cart_pazpbl x, cart_pazpbl y where p.codice=x.codice and x.codice=y.codice and (x.cp_code like '410%' or x.cp_code like '411%' or x.cp_code like '412%' or x.cp_code like '413%' or x.cp_code like '414%') and y.cp_code like 'v45.82' )
and p.codice IN (select z.codice from cart_terap z where p.codice=z.codice and z.co_atc like 'B01AC04' and z.data_open between today() - 180 and today())
and p.codice IN (select z.codice from cart_terap z where p.codice=z.codice and z.co_atc like 'B01AC06' and z.data_open between today() - 180 and today())
AND (n.pa_drevoca IS NULL or n.pa_drevoca >TODAY()) AND (p.decesso IS NULL)
AND p.pa_convenzione='S'
AND n.pa_medi like '%'
order by 1,2
Mostra quindi l'eventuale betabloccante usato nell'ultimo anno e l'ultima frequenza cardiaca registrata.
in AND n.pa_medi like '%' va messo il solito codice per la medicina di gruppo
giampiero
Per renderla più precisa, comprendere anche altri antiaggreganti, andrebbe perfezionata, intanto vedi se ti funziona.
select distinct p.cognome, p.nome, days(p.nascita, today())/365 eta, p.sesso sesso,
(select list (distinct x.co_des) from cart_terap x where p.codice=x.codice and x.co_atc like 'C07%' and x.data_open > today() - 365) AS beta_bloc,
(select pa.frequenza from cart_press pa where p.codice=pa.codice and
pa.frequenza Is Not Null And Not Exists (Select a1.codice From cart_press a1
Where pa.codice = a1.codice And (a1.data_open > pa.data_open
Or (a1.data_open = pa.data_open And a1.rowid>pa.rowid)) And a1.frequenza is Not Null) ) AS Frequenza
from pazienti p, nos_002 n
where
p.codice=n.codice
and p.codice IN (select x.codice from cart_pazpbl x, cart_pazpbl y where p.codice=x.codice and x.codice=y.codice and (x.cp_code like '410%' or x.cp_code like '411%' or x.cp_code like '412%' or x.cp_code like '413%' or x.cp_code like '414%') and y.cp_code like 'v45.82' )
and p.codice IN (select z.codice from cart_terap z where p.codice=z.codice and z.co_atc like 'B01AC04' and z.data_open between today() - 180 and today())
and p.codice IN (select z.codice from cart_terap z where p.codice=z.codice and z.co_atc like 'B01AC06' and z.data_open between today() - 180 and today())
AND (n.pa_drevoca IS NULL or n.pa_drevoca >TODAY()) AND (p.decesso IS NULL)
AND p.pa_convenzione='S'
AND n.pa_medi like '%'
order by 1,2
GiampiMaz- Membro Junior
- Messaggi : 122
Punti : 5187
Voti per importanza dei messaggi : 33
Data d'iscrizione : 20.02.11
doppia aggregazione + frequenza
Grazie per la query, purtroppo il risultato è zero pur mettendo come data di estrazione dal 2010 ad oggi. Ho messo il mio codice per la estrazione del mio archivio ma il risultato è sempre zero. Noi della MEDIASS siamo una associazione in rete 8non medicina di gruppo) e ognuno ha il suo codice. Quando faccio le estrazioni per tutti gli altri colleghi dal server entro come amminstratore, non so se questo cambia le cose. Grazie per la tua disponibilità.
nanci giacinto- Membro Junior
- Messaggi : 128
Punti : 5209
Voti per importanza dei messaggi : -1
Data d'iscrizione : 02.03.11
Re: doppia aggregazione e frequenza
Ciao, a me funziona.
Poichè usa le tabelle è inutile inserire date nella pagina di centrale statistiche che viene completamente baypassata.
prova a togliere del tutto la riga
AND n.pa_medi like '%'
così cerca in tutto il database anche quello dei colleghi associati e guarda se estrae qualcosa, poi si può elaborarla.
gp
Poichè usa le tabelle è inutile inserire date nella pagina di centrale statistiche che viene completamente baypassata.
prova a togliere del tutto la riga
AND n.pa_medi like '%'
così cerca in tutto il database anche quello dei colleghi associati e guarda se estrae qualcosa, poi si può elaborarla.
gp
GiampiMaz- Membro Junior
- Messaggi : 122
Punti : 5187
Voti per importanza dei messaggi : 33
Data d'iscrizione : 20.02.11
doppia aggregazione + frequenza
Ciao Avevo già fatto questa prova e il risultato è sempre zero.
nanci giacinto- Membro Junior
- Messaggi : 128
Punti : 5209
Voti per importanza dei messaggi : -1
Data d'iscrizione : 02.03.11
doppia aggregazione + frequenza
Salve togliendo l'estrazione delle patologie la query funziona a metà nel senso che mi estrae cognome, nome, età, sesso e frequenza. Non estrae la doppia aggregazione, è come se la seconda parte della query non esiste. A me basterebbe che a quanto estrae questa query si aggiungesse soltanto la doppia aggregazione B01AC04 e B01AC06. Grazie
select distinct p.cognome, p.nome, days(p.nascita, today())/365 eta, p.sesso sesso,
(select list (distinct x.co_des) from cart_terap x where p.codice=x.codice and x.co_atc like 'C07%' and x.data_open > today() - 365) AS beta_bloc,
(select pa.frequenza from cart_press pa where p.codice=pa.codice and
pa.frequenza Is Not Null And Not Exists (Select a1.codice From cart_press a1
Where pa.codice = a1.codice And (a1.data_open > pa.data_open
Or (a1.data_open = pa.data_open And a1.rowid>pa.rowid)) And a1.frequenza is Not Null) ) AS Frequenza
from pazienti p, nos_002 n
where
p.codice=n.codice
and p.codice IN (select z.codice from cart_terap z where p.codice=z.codice and z.co_atc like 'B01AC04' and z.data_open between today() - 180 and today())
and p.codice IN (select z.codice from cart_terap z where p.codice=z.codice and z.co_atc like 'B01AC06' and z.data_open between today() - 180 and today())
AND (n.pa_drevoca IS NULL or n.pa_drevoca >TODAY()) AND (p.decesso IS NULL)
AND p.pa_convenzione='S'
AND n.pa_medi like '%'
order by 1,2
select distinct p.cognome, p.nome, days(p.nascita, today())/365 eta, p.sesso sesso,
(select list (distinct x.co_des) from cart_terap x where p.codice=x.codice and x.co_atc like 'C07%' and x.data_open > today() - 365) AS beta_bloc,
(select pa.frequenza from cart_press pa where p.codice=pa.codice and
pa.frequenza Is Not Null And Not Exists (Select a1.codice From cart_press a1
Where pa.codice = a1.codice And (a1.data_open > pa.data_open
Or (a1.data_open = pa.data_open And a1.rowid>pa.rowid)) And a1.frequenza is Not Null) ) AS Frequenza
from pazienti p, nos_002 n
where
p.codice=n.codice
and p.codice IN (select z.codice from cart_terap z where p.codice=z.codice and z.co_atc like 'B01AC04' and z.data_open between today() - 180 and today())
and p.codice IN (select z.codice from cart_terap z where p.codice=z.codice and z.co_atc like 'B01AC06' and z.data_open between today() - 180 and today())
AND (n.pa_drevoca IS NULL or n.pa_drevoca >TODAY()) AND (p.decesso IS NULL)
AND p.pa_convenzione='S'
AND n.pa_medi like '%'
order by 1,2
nanci giacinto- Membro Junior
- Messaggi : 128
Punti : 5209
Voti per importanza dei messaggi : -1
Data d'iscrizione : 02.03.11
Re: doppia aggregazione e frequenza
In effetti la selezione estrae pazienti con doppia aggregazione, probabilmente intendi che venga rappresentata in tabella.
Prova così:
select distinct p.cognome, p.nome, days(p.nascita, today())/365 eta, p.sesso sesso,
(select list (distinct x.co_des) from cart_terap x where p.codice=x.codice and x.co_atc like 'C07%' and x.data_open > today() - 365) AS beta_bloc,
(select pa.frequenza from cart_press pa where p.codice=pa.codice and
pa.frequenza Is Not Null And Not Exists (Select a1.codice From cart_press a1
Where pa.codice = a1.codice And (a1.data_open > pa.data_open
Or (a1.data_open = pa.data_open And a1.rowid>pa.rowid)) And a1.frequenza is Not Null) ) AS Frequenza,
(select distinct max(z.co_des) from cart_terap z where p.codice=z.codice and z.co_atc like 'B01AC04' ) Clopidogrel,
(select distinct max(z.co_des) from cart_terap z where p.codice=z.codice and z.co_atc like 'B01AC06' ) Ac_Acetilsalicilico
from pazienti p, nos_002 n
where p.codice=n.codice
and p.codice IN (select x.codice from cart_pazpbl x where p.codice=x.codice and (x.cp_code like '41[01234]%' OR x.cp_code like 'v45.82' ))
and p.codice IN (select z.codice from cart_terap z where p.codice=z.codice and z.co_atc like 'B01AC04' and z.data_open between today() - 180 and today())
and p.codice IN (select z.codice from cart_terap z where p.codice=z.codice and z.co_atc like 'B01AC06' and z.data_open between today() - 180 and today())
AND (n.pa_drevoca IS NULL or n.pa_drevoca >TODAY()) AND (p.decesso IS NULL)
AND p.pa_convenzione='S'
AND n.pa_medi like '%'
order by 1,2
Prova così:
select distinct p.cognome, p.nome, days(p.nascita, today())/365 eta, p.sesso sesso,
(select list (distinct x.co_des) from cart_terap x where p.codice=x.codice and x.co_atc like 'C07%' and x.data_open > today() - 365) AS beta_bloc,
(select pa.frequenza from cart_press pa where p.codice=pa.codice and
pa.frequenza Is Not Null And Not Exists (Select a1.codice From cart_press a1
Where pa.codice = a1.codice And (a1.data_open > pa.data_open
Or (a1.data_open = pa.data_open And a1.rowid>pa.rowid)) And a1.frequenza is Not Null) ) AS Frequenza,
(select distinct max(z.co_des) from cart_terap z where p.codice=z.codice and z.co_atc like 'B01AC04' ) Clopidogrel,
(select distinct max(z.co_des) from cart_terap z where p.codice=z.codice and z.co_atc like 'B01AC06' ) Ac_Acetilsalicilico
from pazienti p, nos_002 n
where p.codice=n.codice
and p.codice IN (select x.codice from cart_pazpbl x where p.codice=x.codice and (x.cp_code like '41[01234]%' OR x.cp_code like 'v45.82' ))
and p.codice IN (select z.codice from cart_terap z where p.codice=z.codice and z.co_atc like 'B01AC04' and z.data_open between today() - 180 and today())
and p.codice IN (select z.codice from cart_terap z where p.codice=z.codice and z.co_atc like 'B01AC06' and z.data_open between today() - 180 and today())
AND (n.pa_drevoca IS NULL or n.pa_drevoca >TODAY()) AND (p.decesso IS NULL)
AND p.pa_convenzione='S'
AND n.pa_medi like '%'
order by 1,2
doppia aggregazione e frequenza
OK va bene magnifico grazie, ma è possibile che non esiste un manuale o manualetto del linguaggio sql per fare le query con le tabelle millewin? (non con le viste). Grazie ancora
nanci giacinto- Membro Junior
- Messaggi : 128
Punti : 5209
Voti per importanza dei messaggi : -1
Data d'iscrizione : 02.03.11
doppia aggregazione e frequenza
Scusate perché due query identiche danno risultato diverso. Quella di Giampi da risultato zero quella di Admin, che mi sembra quasi identica, da risultato valido. In cosa si differenziano? grazie saluti
nanci giacinto- Membro Junior
- Messaggi : 128
Punti : 5209
Voti per importanza dei messaggi : -1
Data d'iscrizione : 02.03.11
Re: doppia aggregazione e frequenza
La principale differenza sta nel fatto che quella di Giampiero considera come condizione includente la contemporanea esistenza di 2 problemi: la cardiopatia ischemica e l'angioplastica, nella mia è sufficiente uno dei due. A volte una parentesi messa in un posto o in un altro o un and invece di or porta a risultati completamente diversi.nanci giacinto ha scritto:Scusate perché due query identiche danno risultato diverso. Quella di Giampi da risultato zero quella di Admin, che mi sembra quasi identica, da risultato valido. In cosa si differenziano? grazie saluti
Riguardo al linguaggio SQL ci sono molti manuali e moltissimo si può reperire in internet e molto si può apprendere analizzando le query degli altri, ma una cosa che è stata alla base del mio interessamento a questo mondo affascinante è stato un manuale del caro maestro Leonardo Draghini (detto il Drago) che da parecchio non vedo su questi schermi per cui approfitto per invitarlo a farsi vivo ed in suo onore lo offro a tutti coloro che hanno voglia di divertirsi. CIAO DRAGO !!!!
- File allegati
Re: doppia aggregazione e frequenza
Caro Nanci, eppure sebbene la query del nostro Admin sia più elegante, la mia deve avere qualche baco logico che sul tuo database la fa fallire (sul mio funziona). Ti sarei grato di provare questa. (ripristina la contemporaneità del problema cardiopatia e angioplastica). Se fallisce prova la seconda (lievissima modifica) e la terza (altra lievissima modifica), se non ti sei rotto la quarta.
Poi discutiamo (è così che col mitico Draghini ho imparato il poco che so) .
gp
1)
select distinct p.cognome, p.nome, days(p.nascita, today())/365 eta, p.sesso sesso,
(select list (distinct x.co_des) from cart_terap x where p.codice=x.codice and x.co_atc like 'C07%' and x.data_open > today() - 365) AS beta_bloc,
(select pa.frequenza from cart_press pa where p.codice=pa.codice and
pa.frequenza Is Not Null And Not Exists (Select a1.codice From cart_press a1
Where pa.codice = a1.codice And (a1.data_open > pa.data_open
Or (a1.data_open = pa.data_open And a1.rowid>pa.rowid)) And a1.frequenza is Not Null) ) AS Frequenza
from pazienti p, nos_002 n
where
p.codice=n.codice
and p.codice IN (select x.codice from cart_pazpbl x where p.codice=x.codice and (x.cp_code like '41[01234]%' ))
and p.codice IN (select x.codice from cart_pazpbl x where p.codice=x.codice and x.cp_code like 'v45.82' )
and p.codice IN (select z.codice from cart_terap z where p.codice=z.codice and z.co_atc like 'B01AC04' and z.data_open between today() - 180 and today())
and p.codice IN (select z.codice from cart_terap z where p.codice=z.codice and z.co_atc like 'B01AC06' and z.data_open between today() - 180 and today())
AND (n.pa_drevoca IS NULL or n.pa_drevoca >TODAY()) AND (p.decesso IS NULL)
AND p.pa_convenzione='S'
AND n.pa_medi like '%'
order by 1,2
2)
select distinct p.cognome, p.nome, days(p.nascita, today())/365 eta, p.sesso sesso,
(select list (distinct x.co_des) from cart_terap x where p.codice=x.codice and x.co_atc like 'C07%' and x.data_open > today() - 365) AS beta_bloc,
(select pa.frequenza from cart_press pa where p.codice=pa.codice and
pa.frequenza Is Not Null And Not Exists (Select a1.codice From cart_press a1
Where pa.codice = a1.codice And (a1.data_open > pa.data_open
Or (a1.data_open = pa.data_open And a1.rowid>pa.rowid)) And a1.frequenza is Not Null) ) AS Frequenza
from pazienti p, nos_002 n
where
p.codice=n.codice
and p.codice IN (select distinct x.codice from cart_pazpbl x where p.codice=x.codice and (x.cp_code like '41[01234]%' ))
and p.codice IN (select x.codice from cart_pazpbl x where p.codice=x.codice and x.cp_code like 'v45.82' )
and p.codice IN (select z.codice from cart_terap z where p.codice=z.codice and z.co_atc like 'B01AC04' and z.data_open between today() - 180 and today())
and p.codice IN (select z.codice from cart_terap z where p.codice=z.codice and z.co_atc like 'B01AC06' and z.data_open between today() - 180 and today())
AND (n.pa_drevoca IS NULL or n.pa_drevoca >TODAY()) AND (p.decesso IS NULL)
AND p.pa_convenzione='S'
AND n.pa_medi like '%'
order by 1,2
3)
select distinct p.cognome, p.nome, days(p.nascita, today())/365 eta, p.sesso sesso,
(select list (distinct x.co_des) from cart_terap x where p.codice=x.codice and x.co_atc like 'C07%' and x.data_open > today() - 365) AS beta_bloc,
(select pa.frequenza from cart_press pa where p.codice=pa.codice and
pa.frequenza Is Not Null And Not Exists (Select a1.codice From cart_press a1
Where pa.codice = a1.codice And (a1.data_open > pa.data_open
Or (a1.data_open = pa.data_open And a1.rowid>pa.rowid)) And a1.frequenza is Not Null) ) AS Frequenza
from pazienti p, nos_002 n
where
p.codice=n.codice
and p.codice IN (select x.codice from cart_pazpbl x where p.codice=x.codice and (x.cp_code like '41[01234]%' ))
and p.codice IN (select distinct x.codice from cart_pazpbl x where p.codice=x.codice and x.cp_code like 'v45.82' )
and p.codice IN (select z.codice from cart_terap z where p.codice=z.codice and z.co_atc like 'B01AC04' and z.data_open between today() - 180 and today())
and p.codice IN (select z.codice from cart_terap z where p.codice=z.codice and z.co_atc like 'B01AC06' and z.data_open between today() - 180 and today())
AND (n.pa_drevoca IS NULL or n.pa_drevoca >TODAY()) AND (p.decesso IS NULL)
AND p.pa_convenzione='S'
AND n.pa_medi like '%'
order by 1,2
4)
select distinct p.cognome, p.nome, days(p.nascita, today())/365 eta, p.sesso sesso,
(select list (distinct x.co_des) from cart_terap x where p.codice=x.codice and x.co_atc like 'C07%' and x.data_open > today() - 365) AS beta_bloc,
(select pa.frequenza from cart_press pa where p.codice=pa.codice and
pa.frequenza Is Not Null And Not Exists (Select a1.codice From cart_press a1
Where pa.codice = a1.codice And (a1.data_open > pa.data_open
Or (a1.data_open = pa.data_open And a1.rowid>pa.rowid)) And a1.frequenza is Not Null) ) AS Frequenza
from pazienti p, nos_002 n
where
p.codice=n.codice
and p.codice IN (select distinct x.codice from cart_pazpbl x where p.codice=x.codice and (x.cp_code like '41[01234]%' ))
and p.codice IN (select distinct x.codice from cart_pazpbl x where p.codice=x.codice and x.cp_code like 'v45.82' )
and p.codice IN (select z.codice from cart_terap z where p.codice=z.codice and z.co_atc like 'B01AC04' and z.data_open between today() - 180 and today())
and p.codice IN (select z.codice from cart_terap z where p.codice=z.codice and z.co_atc like 'B01AC06' and z.data_open between today() - 180 and today())
AND (n.pa_drevoca IS NULL or n.pa_drevoca >TODAY()) AND (p.decesso IS NULL)
AND p.pa_convenzione='S'
AND n.pa_medi like '%'
order by 1,2
Poi discutiamo (è così che col mitico Draghini ho imparato il poco che so) .
gp
1)
select distinct p.cognome, p.nome, days(p.nascita, today())/365 eta, p.sesso sesso,
(select list (distinct x.co_des) from cart_terap x where p.codice=x.codice and x.co_atc like 'C07%' and x.data_open > today() - 365) AS beta_bloc,
(select pa.frequenza from cart_press pa where p.codice=pa.codice and
pa.frequenza Is Not Null And Not Exists (Select a1.codice From cart_press a1
Where pa.codice = a1.codice And (a1.data_open > pa.data_open
Or (a1.data_open = pa.data_open And a1.rowid>pa.rowid)) And a1.frequenza is Not Null) ) AS Frequenza
from pazienti p, nos_002 n
where
p.codice=n.codice
and p.codice IN (select x.codice from cart_pazpbl x where p.codice=x.codice and (x.cp_code like '41[01234]%' ))
and p.codice IN (select x.codice from cart_pazpbl x where p.codice=x.codice and x.cp_code like 'v45.82' )
and p.codice IN (select z.codice from cart_terap z where p.codice=z.codice and z.co_atc like 'B01AC04' and z.data_open between today() - 180 and today())
and p.codice IN (select z.codice from cart_terap z where p.codice=z.codice and z.co_atc like 'B01AC06' and z.data_open between today() - 180 and today())
AND (n.pa_drevoca IS NULL or n.pa_drevoca >TODAY()) AND (p.decesso IS NULL)
AND p.pa_convenzione='S'
AND n.pa_medi like '%'
order by 1,2
2)
select distinct p.cognome, p.nome, days(p.nascita, today())/365 eta, p.sesso sesso,
(select list (distinct x.co_des) from cart_terap x where p.codice=x.codice and x.co_atc like 'C07%' and x.data_open > today() - 365) AS beta_bloc,
(select pa.frequenza from cart_press pa where p.codice=pa.codice and
pa.frequenza Is Not Null And Not Exists (Select a1.codice From cart_press a1
Where pa.codice = a1.codice And (a1.data_open > pa.data_open
Or (a1.data_open = pa.data_open And a1.rowid>pa.rowid)) And a1.frequenza is Not Null) ) AS Frequenza
from pazienti p, nos_002 n
where
p.codice=n.codice
and p.codice IN (select distinct x.codice from cart_pazpbl x where p.codice=x.codice and (x.cp_code like '41[01234]%' ))
and p.codice IN (select x.codice from cart_pazpbl x where p.codice=x.codice and x.cp_code like 'v45.82' )
and p.codice IN (select z.codice from cart_terap z where p.codice=z.codice and z.co_atc like 'B01AC04' and z.data_open between today() - 180 and today())
and p.codice IN (select z.codice from cart_terap z where p.codice=z.codice and z.co_atc like 'B01AC06' and z.data_open between today() - 180 and today())
AND (n.pa_drevoca IS NULL or n.pa_drevoca >TODAY()) AND (p.decesso IS NULL)
AND p.pa_convenzione='S'
AND n.pa_medi like '%'
order by 1,2
3)
select distinct p.cognome, p.nome, days(p.nascita, today())/365 eta, p.sesso sesso,
(select list (distinct x.co_des) from cart_terap x where p.codice=x.codice and x.co_atc like 'C07%' and x.data_open > today() - 365) AS beta_bloc,
(select pa.frequenza from cart_press pa where p.codice=pa.codice and
pa.frequenza Is Not Null And Not Exists (Select a1.codice From cart_press a1
Where pa.codice = a1.codice And (a1.data_open > pa.data_open
Or (a1.data_open = pa.data_open And a1.rowid>pa.rowid)) And a1.frequenza is Not Null) ) AS Frequenza
from pazienti p, nos_002 n
where
p.codice=n.codice
and p.codice IN (select x.codice from cart_pazpbl x where p.codice=x.codice and (x.cp_code like '41[01234]%' ))
and p.codice IN (select distinct x.codice from cart_pazpbl x where p.codice=x.codice and x.cp_code like 'v45.82' )
and p.codice IN (select z.codice from cart_terap z where p.codice=z.codice and z.co_atc like 'B01AC04' and z.data_open between today() - 180 and today())
and p.codice IN (select z.codice from cart_terap z where p.codice=z.codice and z.co_atc like 'B01AC06' and z.data_open between today() - 180 and today())
AND (n.pa_drevoca IS NULL or n.pa_drevoca >TODAY()) AND (p.decesso IS NULL)
AND p.pa_convenzione='S'
AND n.pa_medi like '%'
order by 1,2
4)
select distinct p.cognome, p.nome, days(p.nascita, today())/365 eta, p.sesso sesso,
(select list (distinct x.co_des) from cart_terap x where p.codice=x.codice and x.co_atc like 'C07%' and x.data_open > today() - 365) AS beta_bloc,
(select pa.frequenza from cart_press pa where p.codice=pa.codice and
pa.frequenza Is Not Null And Not Exists (Select a1.codice From cart_press a1
Where pa.codice = a1.codice And (a1.data_open > pa.data_open
Or (a1.data_open = pa.data_open And a1.rowid>pa.rowid)) And a1.frequenza is Not Null) ) AS Frequenza
from pazienti p, nos_002 n
where
p.codice=n.codice
and p.codice IN (select distinct x.codice from cart_pazpbl x where p.codice=x.codice and (x.cp_code like '41[01234]%' ))
and p.codice IN (select distinct x.codice from cart_pazpbl x where p.codice=x.codice and x.cp_code like 'v45.82' )
and p.codice IN (select z.codice from cart_terap z where p.codice=z.codice and z.co_atc like 'B01AC04' and z.data_open between today() - 180 and today())
and p.codice IN (select z.codice from cart_terap z where p.codice=z.codice and z.co_atc like 'B01AC06' and z.data_open between today() - 180 and today())
AND (n.pa_drevoca IS NULL or n.pa_drevoca >TODAY()) AND (p.decesso IS NULL)
AND p.pa_convenzione='S'
AND n.pa_medi like '%'
order by 1,2
GiampiMaz- Membro Junior
- Messaggi : 122
Punti : 5187
Voti per importanza dei messaggi : 33
Data d'iscrizione : 20.02.11
doppia aggregazione + frequenza
Caro Giampi tutte e quattro danno inesorabilmente risultato zero. Forse c'è qualcosa che non va nel mio archivio, allora perchè la query di Admin funziona?. Caro Admin "le note per l'utilizzo del linguaggio SQL" del dott. Draghini le posseggo fin dalla loro nascita ma mi pare che in quelle note come nelle altre pubblicate allora da MilleniuM viene utilizzato un linguaggio valido per le viste e non per le tabelle, infatti noto che voi nelle vowstre query utilizzate dei comandi e una sintassi che non si trova in nessuno dei due manuali SQL sopra citati. Grazie ad entrambi per l'aiuto, studierò le vostre query per imparare.
nanci giacinto- Membro Junior
- Messaggi : 128
Punti : 5209
Voti per importanza dei messaggi : -1
Data d'iscrizione : 02.03.11
Re: doppia aggregazione e frequenza
nanci giacinto ha scritto:Caro Giampi tutte e quattro danno inesorabilmente risultato zero. Forse c'è qualcosa che non va nel mio archivio, allora perchè la query di Admin funziona?.
Sei passato a postgress?
Mario
Il mio e' il vecchio .db e funzionano..
mario shirt- Membro Junior
- Messaggi : 254
Punti : 5389
Voti per importanza dei messaggi : 4
Data d'iscrizione : 21.02.11
Età : 69
Re: doppia aggregazione e frequenza
pardon le 4 di Giambi mi danno risultato Omario shirt ha scritto:nanci giacinto ha scritto:Caro Giampi tutte e quattro danno inesorabilmente risultato zero. Forse c'è qualcosa che non va nel mio archivio, allora perchè la query di Admin funziona?.
Sei passato a postgress?
Mario
Il mio e' il vecchio .db e funzionano..
Mario
mario shirt- Membro Junior
- Messaggi : 254
Punti : 5389
Voti per importanza dei messaggi : 4
Data d'iscrizione : 21.02.11
Età : 69
Re: doppia aggregazione e frequenza
Quando una query da come risultato 0 ad alcuni ed ad altri no i motivi possono essere due:
una subquery non è formulata bene e per tale motivo si può bloccare per cui l'intera query risulta 0
o effettivamente nessun paziente risponde ai requisiti richiesti.
Secondo quanto richiesto da Nanci i pazienti dovevano presentare contemporaneamente: problema cardiopatia, problema angioplastica e doppia antiaggregazione.
Ma ce ne sono? (da me 4 pazienti).
Proviamo questa, seleziona i pazienti con problema cardiopatie o problema angioplastica (come quella di Admin) e con doppia antiaggregazione, nella tabella viene indicato se sono presenti o no questi problemi.
Controllate che vi siano pazienti con 'si' sia sotto cardiop che sotto angiopl contemporaneamente.
gp
select distinct p.cognome, p.nome, days(p.nascita, today())/365 eta, p.sesso sesso,
(select list (distinct x.co_des) from cart_terap x where p.codice=x.codice and x.co_atc like 'C07%' and x.data_open > today() - 365) AS beta_bloc,
(select pa.frequenza from cart_press pa where p.codice=pa.codice and
pa.frequenza Is Not Null And Not Exists (Select a1.codice From cart_press a1
Where pa.codice = a1.codice And (a1.data_open > pa.data_open
Or (a1.data_open = pa.data_open And a1.rowid>pa.rowid)) And a1.frequenza is Not Null) ) AS Frequenza,
if p.codice IN (select x.codice from cart_pazpbl x where p.codice=x.codice and (x.cp_code like '41[01234]%' )) then 'si' else 'no' endif _cardiop_,
if p.codice IN (select x.codice from cart_pazpbl x where p.codice=x.codice and x.cp_code like 'v45.82' ) then 'si' else 'no' endif _angiopl_
from pazienti p, nos_002 n
where
p.codice=n.codice
and (p.codice IN (select x.codice from cart_pazpbl x where p.codice=x.codice and (x.cp_code like '41[01234]%' )) OR p.codice IN (select x.codice from cart_pazpbl x where p.codice=x.codice and x.cp_code like 'v45.82' ) )
and p.codice IN (select z.codice from cart_terap z where p.codice=z.codice and z.co_atc like 'B01AC04' and z.data_open between today() - 180 and today())
and p.codice IN (select z.codice from cart_terap z where p.codice=z.codice and z.co_atc like 'B01AC06' and z.data_open between today() - 180 and today())
AND (n.pa_drevoca IS NULL or n.pa_drevoca >TODAY()) AND (p.decesso IS NULL)
AND p.pa_convenzione='S'
AND n.pa_medi like '%'
order by 1,2
una subquery non è formulata bene e per tale motivo si può bloccare per cui l'intera query risulta 0
o effettivamente nessun paziente risponde ai requisiti richiesti.
Secondo quanto richiesto da Nanci i pazienti dovevano presentare contemporaneamente: problema cardiopatia, problema angioplastica e doppia antiaggregazione.
Ma ce ne sono? (da me 4 pazienti).
Proviamo questa, seleziona i pazienti con problema cardiopatie o problema angioplastica (come quella di Admin) e con doppia antiaggregazione, nella tabella viene indicato se sono presenti o no questi problemi.
Controllate che vi siano pazienti con 'si' sia sotto cardiop che sotto angiopl contemporaneamente.
gp
select distinct p.cognome, p.nome, days(p.nascita, today())/365 eta, p.sesso sesso,
(select list (distinct x.co_des) from cart_terap x where p.codice=x.codice and x.co_atc like 'C07%' and x.data_open > today() - 365) AS beta_bloc,
(select pa.frequenza from cart_press pa where p.codice=pa.codice and
pa.frequenza Is Not Null And Not Exists (Select a1.codice From cart_press a1
Where pa.codice = a1.codice And (a1.data_open > pa.data_open
Or (a1.data_open = pa.data_open And a1.rowid>pa.rowid)) And a1.frequenza is Not Null) ) AS Frequenza,
if p.codice IN (select x.codice from cart_pazpbl x where p.codice=x.codice and (x.cp_code like '41[01234]%' )) then 'si' else 'no' endif _cardiop_,
if p.codice IN (select x.codice from cart_pazpbl x where p.codice=x.codice and x.cp_code like 'v45.82' ) then 'si' else 'no' endif _angiopl_
from pazienti p, nos_002 n
where
p.codice=n.codice
and (p.codice IN (select x.codice from cart_pazpbl x where p.codice=x.codice and (x.cp_code like '41[01234]%' )) OR p.codice IN (select x.codice from cart_pazpbl x where p.codice=x.codice and x.cp_code like 'v45.82' ) )
and p.codice IN (select z.codice from cart_terap z where p.codice=z.codice and z.co_atc like 'B01AC04' and z.data_open between today() - 180 and today())
and p.codice IN (select z.codice from cart_terap z where p.codice=z.codice and z.co_atc like 'B01AC06' and z.data_open between today() - 180 and today())
AND (n.pa_drevoca IS NULL or n.pa_drevoca >TODAY()) AND (p.decesso IS NULL)
AND p.pa_convenzione='S'
AND n.pa_medi like '%'
order by 1,2
GiampiMaz- Membro Junior
- Messaggi : 122
Punti : 5187
Voti per importanza dei messaggi : 33
Data d'iscrizione : 20.02.11
Re: doppia aggregazione e frequenza
giusto e perfetto, ora ho 7 paz con doppia antiaggragazione ma non con conteporaneamente problema cardiopatia e angioplastica.GiampiMaz ha scritto:Quando una query da come risultato 0 ad alcuni ed ad altri no i motivi possono essere due:
una subquery non è formulata bene e per tale motivo si può bloccare per cui l'intera query risulta 0
o effettivamente nessun paziente risponde ai requisiti richiesti.
Secondo quanto richiesto da Nanci i pazienti dovevano presentare contemporaneamente: problema cardiopatia, problema angioplastica e doppia antiaggregazione.
Ma ce ne sono? (da me 4 pazienti).
Proviamo questa, seleziona i pazienti con problema cardiopatie o problema angioplastica (come quella di Admin) e con doppia antiaggregazione, nella tabella viene indicato se sono presenti o no questi problemi.
Controllate che vi siano pazienti con 'si' sia sotto cardiop che sotto angiopl contemporaneamente.
gp
Grazie delle spiegazioni...
Mario
mario shirt- Membro Junior
- Messaggi : 254
Punti : 5389
Voti per importanza dei messaggi : 4
Data d'iscrizione : 21.02.11
Età : 69
doppia aggregazione + frequenza
Salve la seconda query di GiapmiMaz funziona anche se ci sono almeno due pz con angioplastica, doppia aggregazione e beta bloccante che non vengono estratti. Stesso risultato che si ha con la query di Admin. saluti
nanci giacinto- Membro Junior
- Messaggi : 128
Punti : 5209
Voti per importanza dei messaggi : -1
Data d'iscrizione : 02.03.11
Re: doppia aggregazione e frequenza
nanci giacinto ha scritto:Salve la seconda query di GiapmiMaz funziona anche se ci sono almeno due pz con angioplastica, doppia aggregazione e beta bloccante che non vengono estratti. Stesso risultato che si ha con la query di Admin. saluti
La spiegazione può essere dovuta al fatto che almeno uno dei due antiaggreganti sia stato prescritto per l'ultima volta oltre 180 giorni fa.
Re: doppia aggregazione e frequenza
OT: mi è piaciuto il "giusto e perfetto" di Mario.
Dott.Hiram- Membro Senior
- Messaggi : 648
Punti : 5867
Voti per importanza dei messaggi : 15
Data d'iscrizione : 21.02.11
Pagina 1 di 2 • 1, 2
Argomenti simili
» frequenza cardiaca
» ricetta elettronica
» STAMPA DOPPIA
» ricetta con doppia prescrizione con problemi diversi
» ricetta elettronica
» STAMPA DOPPIA
» ricetta con doppia prescrizione con problemi diversi
Pagina 1 di 2
Permessi in questa sezione del forum:
Non puoi rispondere agli argomenti in questo forum.