Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di darkblOOd
    Registrato dal
    Jul 2001
    Messaggi
    2,212

    [T-SQL] join fra + campi di 2 tabelle

    volevo sapere se è possibile effettuare delle join fra 2 tabelle, per esempio, in modo tale da "decodificare" più volte un campo presente nella tabella padre.

    Faccio un esempio altrimenti non si cqapisce nulla:
    Supponete di avere la tabella Clienti e la Tabella Comuni.

    Nella tabella Clienti Ho i seguenti campi:
    IDCLiente
    RagSociale
    IDComuneDiNascita
    IDComuneDiResidenza

    Posso fare una join che mi permetta di visualizzare la descrizione presa dalla tabella Comuni in base agli ID presenti nella tabella Clienti?

    Se provo a fare la join così:
    codice:
    SELECT ... FROM Clienti
    Left outer join Comuni on Clienti.IDComuneDiNascita = Comuni.IDComune AND
    Clienti.IDCmuneDiResidenza = Comuni.IDComune
    non mi fa vedere i campi descrizione. Cioè non da errore però la descrizione mi risulta null.

    se tolgo la seconda join mi visualizza la descrizione in base al primo ID, anche se il secondo è diverso.

    pareri? consigli? esperienze dirette?

    grazie

  2. #2
    Utente di HTML.it L'avatar di darkblOOd
    Registrato dal
    Jul 2001
    Messaggi
    2,212
    se al posto della AND uso la OR mi restituisce 2 righe,

    una con la descrizione del primo ID per entrambe le descrizioni (con id diversi)

    e l'altra con la descrizione del secondo ID uguale per entrambe

    :master:

  3. #3
    Utente di HTML.it L'avatar di darkblOOd
    Registrato dal
    Jul 2001
    Messaggi
    2,212
    risolto:

    Tabella Clienti:
    IDCliente
    RagSoc
    IDComuneNasc
    IDComuneRes

    Tabella Comuni:
    IDComune
    Desc

    codice:
    SELECT Clienti.RagSoc, Clienti.IDComuneNasc, myJoin1.Desc, Clienti.IDComuneRes, myJoin2.Desc
    FROM Clienti
    LEFT OUTER JOIN Comuni as myJoin1 on Clienti.IDComuneNasc = myJoin1.IDComune
    LEFT OUTER JOIN Comuni as myJoin2 on Clienti.IDComuneRes = myJoin2.IDComune

    le so, TUTTE! :adhone:

  4. #4
    Utente di HTML.it L'avatar di biste
    Registrato dal
    Apr 2001
    Messaggi
    877
    Originariamente inviato da darkblOOd
    risolto:

    Tabella Clienti:
    IDCliente
    RagSoc
    IDComuneNasc
    IDComuneRes

    Tabella Comuni:
    IDComune
    Desc

    codice:
    SELECT Clienti.RagSoc, Clienti.IDComuneNasc, myJoin1.Desc, Clienti.IDComuneRes, myJoin2.Desc
    FROM Clienti
    LEFT OUTER JOIN Comuni as myJoin1 on Clienti.IDComuneNasc = myJoin1.IDComune
    LEFT OUTER JOIN Comuni as myJoin2 on Clienti.IDComuneRes = myJoin2.IDComune

    le so, TUTTE! :adhone:
    Se deve esserci per forza una corrispondenza in Comuni per il codice comune devi usare la inner join, la outer te la appesantisce solo... proporzionalmente al numero di righe nella tua tabella

    HTH
    UGIdotNET
    Microsoft .NET MCAD
    C++, C#, VB6, VB.NET, ASP, ASP.NET
    SQL Server 2000

  5. #5
    Utente di HTML.it L'avatar di darkblOOd
    Registrato dal
    Jul 2001
    Messaggi
    2,212
    Originariamente inviato da biste
    Se deve esserci per forza una corrispondenza in Comuni per il codice comune devi usare la inner join, la outer te la appesantisce solo... proporzionalmente al numero di righe nella tua tabella

    HTH
    eh biste, mi serve la left perchè ci possono essere valori null nella tabella padre e quindi mi scarterebbe il record, invece lo devo includere

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 © 2025 vBulletin Solutions, Inc. All rights reserved.