Newsgroup: it.comp.lang.visual-basic
Titolo: Problema con SQL

Non so come formulare una Query un po' particolare:
Faccio un'esempio:
Ho 2 tabelle:
Tabella A : IDPersona, Cognome
Tabella B : IDPersona, Eta
Voglio fare una query in cui Visualizzo tutte le persone con le relative
eta'.
Il problema mio e' molto semplice: 
Voglio visualizzare tutte le persone con la loro eta' ... e fin qui
nessun problema.
SELECT Persone.Cognome, TabEta.Eta
FROM Persone INNER JOIN TabEta ON Persone.IDPersona = TabEta.IDPersona;
Il problema nasce quando in tabella non posso inserire l'eta' della
persona inserita ma nella query riassuntiva VOGLIO COMUNQUE CHE MI
COMPAIA LA PERSONA ANCHE SE NON HA ASSOCIATA NESSUNA ETA'!
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 ha scritto:
[cut]
SELECT Persone.Cognome, TabEta.Eta
 FROM Persone LEFT JOIN TabEta ON Persone.IDPersona = TabEta.IDPersona;
--------------------------------
Inviato via 
http://usenet.libero.it

 COMPAIA LA PERSONA ANCHE SE NON HA ASSOCIATA NESSUNA ETA'!
SELECT Persone.Cognome, TabEta.Eta
FROM Persone LEFT OUTER JOIN TabEta ON Persone.IDPersona = TabEta.IDPersona;
Non capisco come mai tu conosca l'Inner Join, e lo utilizzi correttamente, e
non conosca invece l'OUTER Join.
Di solito si studiano insieme e sono nella stessa pagina dell'help.
:-))
Ciao
Alberto

 ha scritto nel messaggio
news:d02cea27d769ac9d3e0...@mygate.mailgate.org...

prova con
 SELECT Persone.Cognome, TabEta.Eta
 FROM Persone LEFT JOIN TabEta ON Persone.IDPersona = TabEta.IDPersona;
oppure
SELECT Persone.Cognome, TabEta.Eta
FROM Persone RIGHT JOIN TabEta ON Persone.IDPersona = TabEta.IDPersona;
non ricordo esattamente quale dei due fa al caso tuo.
questo tipo di join recuperano comunque i dati di una tabella (quale dipende
da left o right) anche se nell'altra non c'è corrispondenza
Salutoni
Sergio

 ha scritto nel messaggio
news:d02cea27d769ac9d3e0...@mygate.mailgate.org...
CUT
Ehm...poniamo il caso che io sia Teresa....
io ho sbagliato perchè non ho detto che db uso (al 99% sarà access???boh!)
però
ho ricevuto 3 risposte una differente (se pur leggermente....sembra)
dall'altra....
Quale sceglierà Teresa?
Cavoli sua .....se aveva access poteva provare da .....se direte!
E può anche andar bene ....un po di fatica la faccia!....
ma 3 risposte diverse.....saebbe il caso di motivarle? le abbiamo provate?
Il newbie o lamerozzo quale sceglierà?
li abbiamo aumentato o diminuito la confusione?
secondo me, e senza polemica, un po di confusione ora ce l'ha Teresa!
:-)


ha scritto:

Hai sicuramente ragione, io posso dirti che se al momento di leggere il post
avessi visto che la mia risposta sarebbe stata sostanzialmente uguale ad una
già presente avrei evitato di postare la mia.
Ciao.


 :-)
:-))
Alberto

 :-)
Per quanto riguarda la mia, l'ho postata non sapendo che ce ne fossero altre
(il server delle news era out), non l'ho provata (sono andato a memoria), e
comunque quando devo fare delle query che prevedono join utilizzo sempre il
trucco di farla tramite l'interfaccia grafica di access per poi copiare
l'istruzione sql....
Comunque se teresa fa qualche prova si chiarisce le idee da sola...
Salutoni
Sergio

 wrote in message
news:8dwq9.43386$
Fz.12...@news1.tin.it
con 'LEFT' funziona !
Ora il mio problema e' poter vedere SOLO i record in cui l'eta' NON e'
presente.
Come bisogna modificare l'interrogazione SQL ?
Ho provato a impostare Null ma non funziona.
Grazie


con 'LEFT' funziona !
Ora il mio problema e' poter vedere SOLO i record in cui l'eta' NON e'
presente.
Come bisogna modificare l'interrogazione SQL ?
Ho provato a impostare Null ma non funziona.
Grazie
-- 


 Grazie
Accipicchia, prova a guardare i post più sotto, c'è il trucchetto
fondamentale per risolvere il problema (access ha anche l'autocomposizione
per risolvere questo particolare problema)
Vabbhe, visto che ho già trattato male una fanciulla (o almenno qualcuno con
un nick interpretabile come femminile) venerdì, e non voglio fare la figura
del misogino....
se provi
SELECT Persone.Cognome, TabEta.Eta
FROM Persone LEFT JOIN TabEta ON Persone.IDPersona = TabEta.IDPersona where
tabeta.eta is null
davrebbe funzionare.
Come sempre, non ho provato e vado a memoria.
Salutoni
Sergio

Grazie per non avermi trattato male ed essere stato cosě gentile !
Ciao
