PDA

View Full Version : access e sql


serbring
05-02-2004, 14:15
ho la seguente struttura

persona (CF,nome,cognome) cf è una chiave primaria
ambito (id,nome,cf_r) cf chiave esterna da persona

ora io devo selezionare tutte le istanze di persone che non sono su ambito, io ho fatto

select distinct persona.*
from persona, ambito
where persona.cf <> ambito.cf_r

ho fatto questo su access solo non mi va mi da in pratica tutte le istanze di persona. Dove ho sbagliato? GRAZIE!

cionci
05-02-2004, 14:50
SELECT *
FROM persona
WHERE cf NOT IN (SELECT cf_r FROM ambito);

serbring
05-02-2004, 17:06
hai fatto una mezza specie di join giusto? per quale motivo non dovrebbe andare quello che ho fatto io? sul libro per un interrogazione simile usava delle istruzioni simili!

cionci
05-02-2004, 19:02
No...il mio non è un JOIN...

Allora ti spiego...
"select *
from persona, ambito "
fa un prodotto scalare di ogni record di persona per ogni record di ambito...

Mettiamo che nelle varie tabelle ci siano queste righe:

persona
P1
P2
P3
P4

ambito
A1
A2
A3

Il risultato è:
P1 A1
P1 A2
P1 A3
P2 A1
P2 A2
P2 A3
P3 A1
P3 A2
P3 A3
P4 A1
P4 A2
P4 A3

Ora mettiamo che P1 e A1, P2 e A2, P3 e A3 abbaino a coppie lo stesso cf... Di conseguenza il risultato che tu vorresti sarebbe il solo P4...

"select *
from persona, ambito
where persona.cf <> ambito.cf_r"
Il risultato della query sopra è:

P1 A2
P1 A3
P2 A1
P2 A3
P3 A1
P3 A2
P4 A1
P4 A2
P4 A3

Hai selezionato solo gli attribti di persona ed hai emsso distinct...quindi:

P1
P2
P3
P4

è il risultato giusto...

serbring
09-02-2004, 09:53
ho provato con access ma mi dice di inserire un parametro su cf_responsabile

cionci
09-02-2004, 10:09
SELECT cf_r FROM ambito

Hais critto male il nome del campo nel pezzo di query sopra...

serbring
09-02-2004, 13:30
mi da lo stessa cosa. Se metto un parametro mi da tutti i cf_r diversi dal parametro!

cionci
09-02-2004, 14:00
Ripeto...hai scritto male il nome dell'attributo della seconda query... E' l'unica spiegazione possibile... Controlla il nome dell'attributo nella tabella ambito...

serbring
10-02-2004, 09:03
GRAZIE di cuore mi è venuto avevi ragione tu!