Inner Join con tre tabelle

di il
4 risposte

Inner Join con tre tabelle

Ho creato una query Inner Join per estrapolare i dati di tre tabelle collegate fra di loro dal campo Id.
Della tabella A voglio ottenere solo 9 campi
della tabella B un solo campo
della tabella C un solo campo


sSQL = "SELECT A.1,A.2,A.3,A.4,A.5,A.6,A.7,A.8,A.9,"
sSQL = sSQL & "B.1"
sSQL = sSQL & "C.1"
sSQL = sSQL & " FROM (A LEFT JOIN B ON A.Id = B.Id)"
sSQL = sSQL & " LEFT JOIN C ON B.Id = C.Id"
sSQL = sSQL & " WHERE A.Data BETWEEN #" & Format(txtData.Text, "mm/dd/yyyy") & Space(1) & "00:00:00" & "# AND #" &  Format(txtData1.Text, "mm/dd/yyyy") & Space(1) & "23:59:59" & "#"

I record della tabella A hanno i campi con tutti i dati

Però ho notato che se ho un record con id uguale sia nella tabella B e C estrapolo tutti i dati di B e C

Se ho un solo record nella tabella B estrapolo solo tutti i dati di B

Se non ho record in B mentre in C ne ho uno NON estrapolo il dato della tabella C.

Se imposto un JOIN diverso ( INNER - RIGHT - OUTER)
ricevo il messaggio di errore :  " Sintax error in Join operation "

I due campi delle tabelle B e C sono campi testo.

Come posso risolvere?

Grazie

4 Risposte

  • Re: Inner Join con tre tabelle

    09/02/2026 - pierovb ha scritto:

    (A LEFT JOIN B ON A.Id = B.Id)"

    A che servono le parentesi?

    Select campi che vuoi 

    From tabella che vuoi

    Left join prima detail on campo master=campo detail

    Left join seconda detail on campo master = campo secondo detail

    Where quello che ti pare...

  • Re: Inner Join con tre tabelle

     In access nella prima join le parentesi sono obbligatorie.

    Per il resto ho fatto così, ma non estrapola tutti i campi della seconda e terza tabella se un campo è null.

  • Re: Inner Join con tre tabelle

    Se nella tabella B (la seconda) non c'è una corrispondenza (campo B.id=null)

    non estrapola il dato della tabella C.

    il problema, credo, è nella seconda join.

    Se modifico con  LEFT OUTER JOIN non cambia nulla.

    Con "RIGHT OUTER JOIN"  solleva errore di sintassi. Su access "Proprietà non trovata".

  • Re: Inner Join con tre tabelle

    Risolto!

    Ho sostituito la tabella B con la tabella A che sicuramente ha la corrispondenza con la tabella C (C.Id) 

    sSQL = sSQL & " FROM (A LEFT JOIN B ON A.Id = B.Id)"
    sSQL = sSQL & " LEFT JOIN C ON A.Id = C.Id"
Devi accedere o registrarti per scrivere nel forum
4 risposte