it-swarm.com.de

Auswahl von 2 Spalten in einem inneren Join

Unten sind meine zwei Tabellen:

(enter image description here

Ich versuche eine Abfrage zu schreiben, die diese beiden Tabellen verbindet UND die Werte Source_Title und Destination_Title für die angegebene Quell-ID zurückgibt der Ergebniskartentabelle.

Ich habe versucht, die Abfrage zu schreiben, aber ich kann nur einen Teil des Puzzles lösen, nicht das Ganze.

SELECT Title as SourceTitle 
FROM Result Map AS RM 
INNER JOIN Table_Result TR ON RM.SourceId = TR.Id

Die obige Abfrage gibt mir den Titel für die Quelle, aber nicht den Zieltitel.

5
Benjamin

Benjamin. Wenn ich dich richtig verstanden habe, willst du so etwas:

SELECT TR1.Title AS SourceTitle, 
       TR2.Title AS DestinationTitle
FROM [Result Map] AS RM
INNER JOIN Table_Result TR1 ON RM.Source_Id=TR1.Id
INNER JOIN Table_Result TR2 ON tr2.Id=RM.destination_id;

Die Abfrage wird zurückgegeben

SourceTitle DestinationTitle
ABC         DEF  
9
George K

Mach dir keine Sorgen, es sind nicht nur du. Dadurch werden Neulinge ständig in SQL versetzt. Ich sehe es so oft. Es ist fast ein unvermeidlicher Teil des SQL-Lernens.

Ich werde versuchen, es in Worten zu tun. George K hat bereits mit dem passenden Code geantwortet.

Der Trick besteht darin, Table_Result nicht als {eine Tabelle, aus der Sie Titel extrahieren} zu betrachten.

Dies führt unweigerlich dazu, dass Sie schreiben:

…
FROM {results table}
INNER JOIN {Table with titles in}
  ON {a join for which you can't find the appropriate logic}

Sie müssen in Bezug auf die Funktion denken, die die Tabelle erfüllt in Ihrem Kontext. Welches ist zweifach in Ihrem Fall. Titel der Quelle und Titel des Ziels.

Was gibt Ihnen eine Abfrage, die eher aussieht wie:

…
FROM {result table}
INNER JOIN {table from which you will extract source title}
  ON {join which allows you to retrieve a source title}
INNER JOIN {table from which you will extract destination title}
  ON {join which allows you to retrieve a destination title}
8
Jerb