Visualizzazione dei risultati da 1 a 3 su 3

Discussione: database:Query JOIN

  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2004
    Messaggi
    25

    database:Query JOIN

    Ciao, qualcuno mi può aiutare?

    Devo fare una join che coinvolge tre tabelle:

    Per due ho fatto così:

    strSQL = "SELECT tab1.value1, tab2.value2 FROM tab1 INNER JOIN tab2 ON tab1.id1 = tab2.id2;"

    .... e per tre?


    Ho provato (tab1 è collegata a tab2 e tab2 è collegata a tab3)

    strSQL = "SELECT tab1.value1, tab2.value2, tab3.value3"
    strSQL = strSQL & " FROM tab1, tab2, tab3 "
    strSQL = strSQL & " INNER JOIN tab2 ON tab2.id1=tab3.id1 "
    strSQL = strSQL & " INNER JOIN tab1 ON tab2.id2 = tab1.id2; "


    ma mi da errore di sintassi
    Daniela

  2. #2
    Forse non puoi fare la inner join con 3 tabelle, dato che la join si fa solo su 2.
    Credo che puoi risolvere con

    strSQL = "SELECT distinct tab1.value1, tab2.value2, tab3.value3" FROM tab1,tab2,tab3 where tab2.id1=tab3.id1 and tab2.id2 = tab1.id2;"

    Fa la tuo caso?
    vuoi giocare al fantacalcio gratis, solo per divertirti con tante altre persone? clicca su http://www.fantamagic.it

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Se devi fare la JOIN fra 3 tabelle devi "raggrupparle". In che senso? La join si fa tra 2 tabelle soltanto, quindi devi fare in modo di eseguire la JOIN fra una delle tabelle e la JOIN delle altre due:
    codice:
    SELECT <campi>
    FROM Tabella1 INNER JOIN (
       Tabella2 INNER JOIN Tabella3 ON <vincoli>
    ) ON <vincoli> ;
    Nel tuo caso dovrebbe essere così:
    codice:
    SELECT tab1.value1, tab2.value2, tab3.value3
    FROM tab1 INNER JOIN (
       tab2 INNER JOIN tab3 ON tab2.id1 = tab3.id1
    ) ON tab1.id2 = tab2.id2;
    Nello standard SQL, poi, non è nemmeno necessario l'INNER JOIN in questo caso, dato che hai delle tabelle con join su campi con nome uguale:
    codice:
    SELECT tab1.value1, tab2.value2, tab3.value3
    FROM tab1 NATURAL JOIN (tab2 NATURAL JOIN tab3);
    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.