2016-04-13 13 views
0

Ich habe zwei Tabellen mit den folgenden Formaten:SQL zwischen Spalten und Zeilen Verbindungs ​​

Tabellenname: "Auszeichnungen"

id | Name | Exp_1 | Exp_2 | Exp_3 
1 | Joe | 1  | 2  | 3 
2 | Bob | 1  |   | 3 
3 | James |   | 2  | 

Tabellenname: "Exp"

id | Exp   
1 | Service  
2 | Integrity  
3 | Timeliness 

Das Ergebnis Tabelle, die ich erstellen muss:

id | Name | Exp_1_val | Exp_2_val  | Exp_3_val 
1 | Joe | Service  | Integrity  | Timeliness 
2 | Bob | Service  |     | Timeliness 
3 | James |    | Integrity  |   

Wenn also eine der Spalten "Exp_" in meiner Awards-Tabelle nicht null ist, brauche ich den entsprechenden Wert aus der Exp-Tabelle. Aber ich kann diese nicht mit ID-Nummern vergleichen, nur ihre Werte. Gibt es eine Art von Join, die dies erreichen kann?

Antwort

1

Sie scheinen würden mehrere links brauchen verbindet:

select a.id, a.name, e1.exp as exp1, e2.exp as exp2, e3.exp as exp3 
from awards a left join 
    exp e1 
    on a.exp_1 = e1.id left join 
    exp e2 
    on a.exp_2 = e2.id left join 
    exp e3 
    on a.exp_3 = e3.id ; 
+0

Das ist die Antwort in der Frage, die lad2025 verband. –

+2

@Gordon Linoff und ArturoAP Vielen Dank für Ihre Antworten. Ich habe dies als die Antwort markiert, da sie zuerst eingereicht wurde. Ich war mir nicht sicher, ob ich in diesem Fall einen linken Join verwenden könnte, da ich noch lerne. Danke noch einmal. – Cineno28

-1

Sie können eine linke Verknüpfung verwenden, um die beiden Tabellen zusammenzuführen. Sehen Sie sich die Tabelle unten an, um Ihnen das Verständnis zu erleichtern. Aus Wiki https://en.wikipedia.org/wiki/Join_(SQL)

enter image description here

+0

Wenn Sie das von irgendwo kopiert haben, müssen Sie es zuordnen. –

0

Versuchen Sie, diese

SELECT a.id, a.Name, exp1.Exp, exp2.Exp, exp3.Exp FROM Awards a 
LEFT JOIN Exp exp1 on exp1.id = a.Exp_1 
LEFT JOIN Exp exp2 on exp2.id = a.Exp_2 
LEFT JOIN Exp exp3 on exp3.id = a.Exp_3 

Sie müssen jede Ihrer Exp Felder in Auszeichnungen Tabelle beitreten zu der Exp-Tabelle, verwenden Sie LINKEN VERBINDUNG, falls es keinen Wert gibt, um sie zu verbinden.

Verwandte Themen