CREATE TABLE #Evaluation (ID int IDENTITY(1,1), EvalName varchar(30), EvalDate datetime)
CREATE TABLE #EvaluationDetails (ID int IDENTITY(1,1), EvalID int, Points decimal(22,6), Question varchar(100))
declare @Date datetime
set @Date = GETDATE()
INSERT INTO #Evaluation VALUES ('Specific question',@Date)
INSERT INTO #EvaluationDetails VALUES (1,10,'First question first evaluation')
INSERT INTO #EvaluationDetails VALUES (1,5,'SEcond question first evaluation')
INSERT INTO #EvaluationDetails VALUES (1,0,'Third question first evaluation')
INSERT INTO #EvaluationDetails VALUES (null,0,'First question therd evaluation')
SELECT * FROM #Evaluation e
join #EvaluationDetails ed on ed.EvalID = e.ID
SELECT * FROM #Evaluation e
left join #EvaluationDetails ed on ed.EvalID = e.ID
SELECT * FROM #Evaluation e
right join #EvaluationDetails ed on ed.EvalID = e.ID
DROP TABLE #Evaluation
DROP TABLE #EvaluationDetails
Nehmen wir das folgende Beispiel. Das Ergebnis der Abfragen (Join/links/rechts)
So wie Sie haben wir 2 Bewertung sehen können, die ihre Daten in einem anderen Tisch. Es ist ein matter von dem, was du bekommen willst. WENN Sie interessiert sind, alle Bewertung zu bekommen, die Details (Fragen) haben. Du machst einen einfachen Join. Wenn Sie alle Auswertungen erhalten wollen, auch diejenigen, die keine Antwort haben, machen Sie einen Link zwischen #Evaluation
und #EvaluationDetails
. Wenn Sie alle Fragen, auch diejenigen, die keine Bewertung haben, erhalten möchten, tun Sie das richtige beitreten.
So funktioniert Joins. Natürlich, wenn Sie die Tabellen wechseln und #EvaluationDetails
mit #Evaluation
beitreten, wechseln Sie auch die Joins, so dass der linke Join rechts Join wird und der rechte Join Links Join wird.
Sie erhalten alle Zeilen aus der Tabelle "linke Seite" und nur übereinstimmende Zeilen aus der Tabelle "rechte Seite" in einer "linken Verknüpfung". Das ist die genaue Bedeutung, also im Grunde, von welcher Tabelle wollen Sie alle Zeilen? –
@ Lasse V. Karlsen- Meine Frage ist nicht über die Funktionalität der Links/Rechts-Join. Mein Zweifel ist, ich kann erreichen, was ich von Linke Join und das gleiche Ergebnis von Right Join durch Austauschen des Tabellennamens erreichen möchte, dann wann zu verwenden Right/Left –