0
我陷入了一個棘手的問題,我無法解決自己。 這是我想要實現的。SQL如何在同一張表上使用多個連接
這甚至可能嗎? 我嘗試過以下查詢,但我沒有得到我想要的。
SELECT t1.ID, info.start_bt1, info.start_bt2, t1.ANT as BT1_VL1, t2.ANT as BT1_VL2, t3.ANT as BT2_VL1, t4.ANT as BT2_VL2
FROM antwoorden t1
LEFT JOIN info ON t1.ID = info.ID
LEFT JOIN antwoorden t2
ON t1.ID = t2.ID
AND t2.BT = 1 AND t2.VL = 2
LEFT JOIN antwoorden t3
ON t1.ID = t3.ID
AND t3.BT = 2 AND t3.VL = 1
LEFT JOIN antwoorden t4
ON t1.ID = t4.ID
AND t4.BT = 2 AND t4.VL = 2
WHERE t1.BT = 1 AND t1.VL = 1
問題是我只得到ID 2(從所需的結果)的行。有誰知道我爲什麼只拿到ID 2的行,而不是全部4行?
編輯
我更新了圖片所以這是一個有點清晰明白我的意思。此外,該ID是給予一個人的ID。正如你在圖片中看到的,這意味着一個人可以有多行。我想要做的是將所有從一個人收集到的數據按他們的ID進行分組。我知道這種方式不是一種存儲數據的好方法,但是我不能幫助它,因爲有人做了這個,我不能改變它。
編輯另:這裏是a sql fiddle
如果你更好地解釋你的表實際上意味着什麼,你正在努力實現它可能的幫助。例如,我不清楚你如何從antwoorden表中將id = 1的4行合併到所需的結果表中。你打算在這個過程中執行什麼邏輯?坦率地說,如果你的模式對於你如何處理這些數據是有意義的,那麼它並不是非常清楚。 –
如果您可以創建[SQL小提琴](http://sqlfiddle.com/) –
因爲您的WHERE子句WHERE t1.BT = 1 AND t1.VL = 1,您將永遠不會獲得ID 3或4,因爲你的表中沒有記錄,其ID爲3和4的BT和VL爲1。你必須重新思考你的方法。我不明白你爲什麼沒有得到1的ID。這應該通過,因爲你對其他事情都很熟悉。 – JNevill