MS SQL e JOIN su più colonne

sabato 19 settembre 2015 - 12.02
Tag Elenco Tags  SQL Server 2008 R2

Tonino70 Profilo | Newbie

buon gg a tutti,
ho il seguente problema:

tabella cantieri
id_cantiere
descrizione_cantiere
id_resp01_cantiere
id_resp02_cantiere
id_resp03_cantiere
...

tabella responsabili
id_responsabile
nome_responsabile
cognome_responsabile
....

volevo fare una SELECT in JOIN del tipo:

SELECT id_cantiere, descrizione_cantiere,
id_resp01_cantiere, nome_responsabile, cognome_responsabile
id_resp02_cantiere, nome_responsabile, cognome_responsabile
FROM cantieri
LEFT JOIN responsabili ON id_responsabile = id_resp01_cantiere
AND id_responsabile = id_resp02_cantiere
ORDER BY ...

ma le varie colonne del nome e del cognome non cambiano in base al rispettivo id (nel nome/cognome del resp. 2 mi mette sempre quello del resp. 1)

non so se quello che cerco di fare è fattibile...
grazie per l'aiuto, ciao
Antonino dimarco

renarig Profilo | Expert

>ma le varie colonne del nome e del cognome non cambiano in base
>al rispettivo id (nel nome/cognome del resp. 2 mi mette sempre
>quello del resp. 1)

secondo me devi mettere 2 o più volte la tabella "responsabili"
nella vista ( naturalmente con Allias diversi )

più o meno cosi:
SELECT dbo.cantieri.id_cantiere, dbo.cantieri.descrizione_cantiere, dbo.cantieri.id_resp01_cantiere, Tres_01.nome_responsabile AS nom_res_01, Tres_01.cognome_responsabile AS cog_res_01, dbo.cantieri.id_resp02_cantiere, Tres_02.nome_responsabile AS nom_res_02, Tres_02.cognome_responsabile AS cog_res_02 FROM dbo.cantieri LEFT OUTER JOIN dbo.responsabili AS Tres_01 ON dbo.cantieri.id_resp01_cantiere = Tres_01.id_responsabile LEFT OUTER JOIN dbo.responsabili AS Tres_02 ON dbo.cantieri.id_resp02_cantiere = Tres_02.id_responsabile ;

Facci sapere


PS: Se un cantiere ha più di 3 responsabili come fai ???
hai valutato di fare una sottotabella con i responsabili ???

Tonino70 Profilo | Newbie

grazie, ha funzionato perfettamente,
per il num. dei responsabili a dire la verità ho disponibili 10 id, ed un cantiere non ne ha mai più di 6...

grazie
Antonino dimarco
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-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5