Newsgroup: it.comp.appl.access
Titolo: Problema con una queryed inner join

Ho una query che lega una serie di codici presenti nella tab2 ad un elenco
di nomi presenti nella tab1 cosě definita:
SELECT tab2.nome FROM tab1 INNER JOIN tab2 ON tab1.elenco = 
tab2.id
;
Ora, se nella tab2 ho dei codici che non esistono nell'elenco della tab1
(cioč la tab1 preenta alcuni codici in piů) dalla query, mi perdo i nomi
associati a tali codici. non so se mi sono spiegato.
Come posso fare affinche' cio' non accada? Mi basterebbe, anche
semplicemente che nella query comparisse una riga vuota (o con dei trattini)
tanto per capire che si č verificato il caso di cui sopra.
Grazie

> SELECT tab2.nome FROM tab1 LEFT JOIN tab2 ON tab1.elenco = 
tab2.id
;
Prova in questo modo
Ciao.

>> SELECT tab2.nome FROM tab1 LEFT JOIN tab2 ON tab1.elenco = 
tab2.id
;
Perfetto grazie, anche se adesso mi sento più ignorantone che mai... ma
lascierò access appena finito questo "lavoretto" per l'ufficio!
Un'ultima cosetta... tralaciando il fatto che mi andrebbe bene anche così,
ma ci sarebbe il modo di mettere una qualche stringa al posto dello spazio
vuoto lasciato dalla tua query?

 ha scritto nel messaggio 
news:435f3b4b$0$8499$5fc...@news.tiscali.it...

si, puoi fare per esempio:
SELECT tab2.nome, iif(
tab2.id
 is null; "----------------"; 
tab2.id
) FROM 
tab1 LEFT JOIN tab2 ON tab1.elenco = 
tab2.id
;
metti il campo che ti interessa al posto del 
tab2.id
 o un stringa.
Ciao. 

 metti il campo che ti interessa al posto del 
tab2.id
 o un stringa.
Troppo gentile.
Mi da però un'errore di sintassi che non riesco  a trovare (a parte,
ovviamente iif con if).
Ciao

 ha scritto nel messaggio 
news:435f3ffe$0$8481$5fc...@news.tiscali.it...


sostituisci il ; con la , su questo pezzettino dovrebbe funzionare
Non ti ho domandato se usi un database access o sql server?

 ...
Lui puo anche usare:
nz(
tab2.id
, "----------------")
-- 
HTH
Karl
*********
Access FAQ: 
www.donkarl.com/it
+ Conferenza Italiana per Sviluppatori di Access (CISA) 


si questo va bene se non deve visualizzare 2 stringhe diverse.
ciao.

 Non ti ho domandato se usi un database access o sql server?
E' un db access,  con la soluzione proposta da Karl nz(
tab2.id
,
"----------------"), invece, la query viene eseguita ma non mi restituisce
una stringa, bnesi, sempre il campo vuoto.

 una stringa, bnesi, sempre il campo vuoto.
Posta la tua stringa SQL.


 ma la funzione veramente si chiama iif (=intermediate if).
Questa č la stringa
SELECT tab1.IDIncontro, tab2.nome, IIf(
tab2.id
 Is Null," - ---------------",
tab2.id
) AS Espr1
FROM tab1 LEFT JOIN tab2 ON tab1.elenco = 
tab2.id
;
Cosě va, ma mi crea un nuovo campo  Espr1 mente io vorrei che la stringa
prendesse il posto del "vuoto" in tab2.nome quindi l'ho corretta cosě:
SELECT tab1.IDIncontro, tab2.nome, IIf(
tab2.id
 Is Null," - ---------------",
tab2.nome) AS Espr1
FROM tab1 LEFT JOIN tab2 ON tab1.elenco = 
tab2.id
;
Perň mi crea sempre il nuovo campo Espr1 cosa che non vorrei.

 Però mi crea sempre il nuovo campo Espr1 cosa che non vorrei.
Un campo calcolato non puo sostituire un campo con
un nome identico. Sarebbe un riferimento circolare.
Certo puoi usare un nome della tua scelta. p.e.
SELECT tab1.IDIncontro, IIf(
tab2.id
 Is Null," - ---------------",
tab2.nome) AS MioBelloNome
FROM tab1 LEFT JOIN tab2 ON tab1.elenco = 
tab2.id
;
o come già scritto più breve con nz():
SELECT tab1.IDIncontro, nz(tab2.nome," - ---------------") AS MioBelloNome
FROM tab1 LEFT JOIN tab2 ON tab1.elenco = 
tab2.id
;
-- 
