INNER JOIN fra 3 tabelle aiuto!

martedì 02 febbraio 2010 - 17.49

basicdany Profilo | Expert

ciao, a tutti, ho 3 tabelle

candidato
esame
archiviFA

devo caricare alcuni campi da candidato quando Candidato.id=ArchivioFA.cbfa e Esame.CodCandidato=ArchivioFA.cbfr

ho realizzato questa query ma mi genera errori nella sintassi:

sqlQuery = "SELECT Candidato.Cognome ,Candidato.DataNascita, Candidato.DocIdentita, Esame.NumTraccia, " & _
' "Esame.Fila, Esame.rispDate, Esame.rispVuote, Esame.rispEsatte, Esame.rispErrate, Esame.rispMulti, Esame.punteggio FROM " & _
"Candidato INNER JOIN Esame ON Candidato.id " & _
' "= ArchivioFA.cbfa INNER JOIN ArchivioFA ON Esame.CodCandidato " & _
' "= ArchivioFA.cbfr;"

qualcuno puoi aiutarmi?

AntCiar Profilo | Expert

>devo caricare alcuni campi da candidato quando Candidato.id=ArchivioFA.cbfa
>e Esame.CodCandidato=ArchivioFA.cbfr
>
>sqlQuery = "SELECT Candidato.Cognome ,Candidato.DataNascita,
>Candidato.DocIdentita, Esame.NumTraccia, " & _
>' "Esame.Fila, Esame.rispDate, Esame.rispVuote, Esame.rispEsatte,
>Esame.rispErrate, Esame.rispMulti, Esame.punteggio FROM " & _
>"Candidato INNER JOIN Esame ON Candidato.id " & _
>' "= ArchivioFA.cbfa INNER JOIN ArchivioFA ON Esame.CodCandidato
>" & _
> ' "= ArchivioFA.cbfr;"
>

Ciao l'errore sta nelle join che hai scritto. Nel primo pezzo mettin in join Candidato e Esame ma poi come campi di relazione inserisci Candidato.Id con ArchivioFa.cbfa. Stesso problema per il secondo join, metti in relazione due tabelle e poi specifici i campi di un'altra tabella. Sostituisci tutta la parte del FROM con questo che segue:

FROM ((Candidato INNER JOIN ArchivioFA ON Candidato.Id = ArchivioFA.cbfa) INNER JOIN Esame ON ArchivioFA.cbfr = Esame.CodCandidato)

Ciao ciao


Cristian Barca

basicdany Profilo | Expert

grazie tanto, l'unico problema e che per funzionare ho dovuto modificare il tipo di campo per ArchivioFA.cbfa da testo lo portato a numerico questo
perche Candidato.Id e un contatore.
Questo si puo ovviare scrivendo qualche istruzione nella query stessa.

grazie tanto aspetto risposta

AntCiar Profilo | Expert

Ciao.

Se il database è access nella query puoi utilizzare la conversione a intero della stringa INNER JOIN .... ON CInt(campo1) = campo2.

Comunque se puoi conviene cambiare il tipo di dati nella tabella per uniformità e coerenza.

Ciao ciao
Cristian Barca

basicdany Profilo | Expert

grazie sei stato un prezioso aiuto.

ciao
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5