Newsgroup: it.comp.appl.access
Titolo: Problemi con Query... ci riprovo...

Salve a tutti del NG....ho una query (probabilmente sbagliata)..
che mi trova solo da 1 a 3 record di una sottomaschera..
se trovo un utente con 4 record non trova nulla...
mi sapete spiegare il motivo....???
allego il codice  SQL....per facilitare la soluzione...
SELECT Anagrafe.Codice_ASL, Anagrafe.ID_assistito AS Anagrafe_ID_assistito,
Anagrafe.Cognome, Anagrafe.Nome, Anagrafe.Codice_Fiscale, Anagrafe.Sesso,
Anagrafe.Nascita, Anagrafe.Comune_Nascita, Anagrafe.Comune_Residenza,
Anagrafe.Distretto, Anagrafe.N_Protocollo, Anagrafe.Telefono,
Anagrafe.Medico, Anagrafe.Indirizzo, Anagrafe.Codice_regionale,
Anagrafe.des_nascita, Anagrafe.des_residenza, Anagrafe.trasf AS
Anagrafe_trasf, Anagrafe.cap, Anagrafe.asl_appartenenza,
Esenzioni.Id_Assistito AS Esenzioni_Id_Assistito, Esenzioni.Stato,
Esenzioni.Inizio_Esenzione, Esenzioni.Fine_esenzione,
Esenzioni.Prossimo_Rinnovo, Esenzioni.Codice_Esenzione, Esenzioni.trasf AS
Esenzioni_trasf, I_parte.descrizione, I_parte.codice
FROM Anagrafe INNER JOIN (Esenzioni INNER JOIN (I_parte RIGHT JOIN II_parte
ON I_parte.link = II_parte.link) ON Esenzioni.Codice_Esenzione =
II_parte.CODICE_ESENZIONE) ON Anagrafe.ID_assistito = Esenzioni.Id_Assistito
WHERE (((([Anagrafe].[Cognome]) & " " & [Anagrafe].[Nome]) Like [Digitare
Cognome_Nome Esente Ticket]));
--
:<))   SuperPippo®

 allego il codice  SQL....per facilitare la soluzione...
e' ovvio che stai celiando
[stracut]
--
a.cara 
Togli qualcosa dall'email

"SuperPippoŽ" wrote:
[cut]
c'e' qualche null in giro qui?
(I_parte RIGHT JOIN II_parte
ON I_parte.link = II_parte.link)
prova a fare una select che riguardi solo questa parte e verifica se
ottieni i risultati aspettati


 a.cara
He, he, he...... ;-)
@Alex.

 ottieni i risultati aspettati
-----------------------
grazie  Alessandro per avermi risposto...anche se non ho capito
il primo post... cmq...
per le mie scarse conoscenze in Access ti dico che qualche campo
Null in Esenzione esiste..inoltre ho provato come da te detto ed il
risultato
č lo stesso... escono solo utenti fino a 3 codici....
vi č qualche soluzione ???
 ecco il codice Sql...
SELECT I_parte.descrizione, I_parte.codice
FROM Anagrafe INNER JOIN (Esenzioni INNER JOIN (I_parte RIGHT JOIN II_parte
ON I_parte.link = II_parte.link) ON Esenzioni.Codice_Esenzione =
II_parte.CODICE_ESENZIONE) ON Anagrafe.ID_assistito = Esenzioni.Id_Assistito
WHERE (((([Anagrafe].[Cognome]) & " " & [Anagrafe].[Nome]) Like [Digitare
Cognome_Nome Esente Ticket]))
Ciao...

 Cognome_Nome Esente Ticket]))
Cerco di essere un po' piu chiaro.
(vedi gia' va meglio hai messo solo un pezzo della query)
Da quello che vedo sei in inner join fra le esenzioni e le tabelle
x_parte 
(che fra loro sono in right). Cosa succede fra esenzioni e x_parte?
vengono fuori solo quelle che hanno codice presente su entrambi i lati,
indi se per caso esiste una esenzione che non ha la sua controparte
in x_parte tale esenzione viene eliminata e quindi non compare.
Prova per il momento a mettere in left join esenzioni su parte.


 Prova per il momento a mettere in left join esenzioni su parte.
--------------------
ho provato con LEFT ma mi dice espressione JOIN non supportata...
come posso fare ???
Ciao e buona domenica...


Creati una query per le tabelle I_parte e II_parte
Riprova la left utilizzando la query 


 Riprova la left utilizzando la query
-------------
diavolaccio... niente da fare... ho creato una query provvisoria...
ma non mi mostra piů vari campi come Descrizione
ed avevo provato anche ad includere i sottocodici
ma nulla ... sembra che dal mio punto di partenza la soluzione
peggiori.....
ecco il cod sql...
SELECT Esenzioni.trasf AS Esenzioni_trasf, Anagrafe.Cognome, Anagrafe.Nome,
Esenzioni.Codice_Esenzione, pippo.descrizione
FROM Anagrafe INNER JOIN (Esenzioni LEFT JOIN pippo ON
Esenzioni.Codice_Esenzione = pippo.I_parte.link) ON Anagrafe.ID_assistito =
Esenzioni.Id_Assistito
WHERE (((([Anagrafe].[Cognome]) & " " & [Anagrafe].[Nome]) Like [Digitare
Cognome_Nome Esente Ticket]))
come altro posso provare ???
e cmq... grazie per l'aiuto...

 e cmq... grazie per l'aiuto...
IN questi casi si procede con ordine
1) Query su anagrafica  se ok
2)  query su anagrafica + esenzioni se ok
3) query su I e II parte se ok 
4) query su anagrafica + esenzioni + query su I & II parte
Ho rivisto la query originale. Richiedi la descrizione ed il codice di
I_Parte.
Domanda: a che ti serve II_PARTE? Sopratutto in RIGHT, se non prelevi
alcun dato da II_PARTE?
Che la descrizione di I_parte, alcune volte non sempre, possa mancare
e' nella logica delle cose. Sta scritto li sulla select.
Se per caso hai una II_parte che non ha corrispondenza in I_PARTE
come pretendi di trovare il codice e la descrizione di I_PARTE?
        I_parte                  II_parte
Cod     Desc                     Cod
1        a                        1
-        -                        2
3        b                        -
Il risultato dovrebbe essere:
1        a                        1
-        -                        2
s. e&o


 "SuperPippo®" wrote:
[superCut]
Ciao Alessandro... è tutto il pomeriggio che ci sbatto
 e sono arrivato a fare delle prove...e  sembra che tutto funzioni...
nel senso che già da prima funzionava la query...
solo che un "paziente campione" che io avevo preso
da 4 esenzioni non me lo estraeva... ho provato a ridigitare il Cognome e
Nome
ed è tutto ok... ed ho provato anche con un paziente da 5 esenzioni...
e sembra OK....
però a dir il vero "ho accorciato" in DB a soli 150 record...
mentre in realtà sono circa 12.000 quindi non vorrei che i
campi Null rompano ancora,.....
siccome sono stanchissimo e vorrei ritentare domani a fare dei
test per vedere se tutto funge prima di fare stò benedetto Report...
mi sai dire se è possibile e come fare una query che mi ordini
oppure anche mi trovi solamente i pazienti in ordine di numero
 di esenzioni ad essi assegnati....
esempio.... pazienti che hanno solo un codice di esenzione
 in sottomaschera
poi con un'altra ricerca quelli che ne hanno assegnati 2 e così via...
in maniera che mi segno a campione alcuni di loro per fare delle
prove sul DB intero....
ti ringrazio della collaborazione... e cmq ti allego il cod. sql
che sembri funzioni.... poi se hai delle idee migliori ben vengano...
-------------------------------------------------------------
SELECT I_parte.descrizione, I_parte.codice, Anagrafe.Cognome, Anagrafe.Nome,
Esenzioni.Codice_Esenzione
FROM Anagrafe INNER JOIN (Esenzioni INNER JOIN (I_parte RIGHT JOIN II_parte
ON I_parte.link = II_parte.link) ON Esenzioni.Codice_Esenzione =
II_parte.CODICE_ESENZIONE) ON Anagrafe.ID_assistito = Esenzioni.Id_Assistito
WHERE (((([Anagrafe].[Cognome]) & " " & [Anagrafe].[Nome]) Like [Digitare
Cognome_Nome Esente Ticket]));
-----------------------------------------------------------------
CIAO !!!!

 -----------------------------------------------------------------
select anagrafe.cognome, anagrafe.nome, count(*) from Q_sovraumana
 group by anagrafe.cognome, anagrafe.nome


 >
Ciao Alessandro.. nel pomeriggio riprendo a smanettare
e "collaudare" se funge il report...
e cmq riguardo la query che ti dicevo di conteggio non è
quella che mi hai postato mi sono spiegato male...
per comodità mi occorrerebbe una query che mi conteggi
i Codici di esenzione attibuiti a ciascun paziente non i sottocodici
che sono molti di più...
 ho una tabella Anagrafe ed una Tab Esenzioni
relazionata 1>molti...
mi servirebbe conteggiare in ordine crescente i pazienti che hanno
i vari codici...
esempio pinco pallino  1
                            ciccio 1
                            tarzan 2
                       topoplino 3
e così via...
è possibile ???
altrimenti fa niente Ciao...