2013-02-01 77 views
0

我遇到了一個問題,試圖找到一個通用的解決方案,它作爲一個連接。非標準連接

我有2個表:

http://pastebin.com/q5yws5Ym(不知道如何執行造型)

,我想產生類似 http://pastebin.com/GscBUrYS

(同時也有更多的參數,我很感興趣在我將如何做這樣的事情)

雖然我能達到類似的效果與自連接和equi連接,它會產生大量不需要的ro WS,我不知道如何自動刪除。

+0

每個用戶的參數數量是固定的還是可能是一個用戶有兩個參數,一個是四個等? –

+0

所有用戶的參數數量都是相同的。 (固定的) –

回答

1

試試沿着線:

SELECT user.user_id, j1.user_param, j1.user_value, j2.user_param, j2.user_value 
FROM user 
JOIN Users_info j1 ON user.user_id = j1.user_id 
JOIN users_info j2 on user.user_id = j2.user_id 
where j1.user_param != j2.user_param 
GROUP BY user.user_id 

它可能會,你將需要更多的「除外」條款的地方,以確保每行只選擇一次,但總的思路應該工作(對於給定和有限數量的不同user_param)。

+0

因此給出3個參數,它將沿着 的行#SELECT user.user_id,j1.user_param,j1.user_value,j2.user_param,j2.user_value,j3.user_param,j3.user_value FROM user JOIN users_info上的J1 user.user_id = j1.user_id JOIN users_info J2上user.user_id = j2.user_id JOIN users_info J3上user.user_id = j3.user_id 其中j1.user_param!= j2.user_param和j1.user_param != j3.user_param和j2.user_param!= j3.user_param GROUP BY user.user_id' –

+0

是的,類似的東西。我手頭沒有數據庫服務器,但我也認爲這取決於實際的服務器。 –

+0

謝謝,我會研究它。 (試圖找到更抽象的/關係代數的解決方案) –