|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Sep 2003
Città: Modena
Messaggi: 4125
|
access e sql
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! |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
SELECT *
FROM persona WHERE cf NOT IN (SELECT cf_r FROM ambito); |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Sep 2003
Città: Modena
Messaggi: 4125
|
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!
Ultima modifica di serbring : 05-02-2004 alle 18:09. |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
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... |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Sep 2003
Città: Modena
Messaggi: 4125
|
ho provato con access ma mi dice di inserire un parametro su cf_responsabile
|
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
SELECT cf_r FROM ambito
Hais critto male il nome del campo nel pezzo di query sopra... |
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Sep 2003
Città: Modena
Messaggi: 4125
|
mi da lo stessa cosa. Se metto un parametro mi da tutti i cf_r diversi dal parametro!
|
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Ripeto...hai scritto male il nome dell'attributo della seconda query... E' l'unica spiegazione possibile... Controlla il nome dell'attributo nella tabella ambito...
|
![]() |
![]() |
![]() |
#9 |
Senior Member
Iscritto dal: Sep 2003
Città: Modena
Messaggi: 4125
|
GRAZIE di cuore mi è venuto avevi ragione tu!
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 16:41.