2010-09-30 70 views
0
CREATE VIEW myView AS SELECT * 
FROM `ce_userbadges` 
WHERE ceub_userid =85; 

SELECT * 
FROM ce_badge 
LEFT JOIN myView ON ceb_id = ceub_badgeid; 

所以它必須選擇用戶85擁有的所有徽章以及他們沒有的徽章(因此爲左連接)。可以這樣寫,而不使用視圖,而是使用子查詢或其他東西

我tryed這一點,但它確實後的用戶ID過濾的加入

SELECT * FROM ce_userbadges 
right join ce_badge on ceub_badgeid = ceb_id 
WHERE ceub_userid = 85 

回答

4
SELECT * FROM ce_badge 
LEFT JOIN ce_userbadges 
ON ceub_badgeid = ceb_id AND ceub_userid = 85 
1

你可以簡單地說,你使用它的視圖的代碼:

SELECT * 
FROM ce_badge 
LEFT JOIN (
    SELECT * 
    FROM `ce_userbadges` 
    WHERE ceub_userid = 85 
) x ON ceb_id = ceub_badgeid; 
+0

感謝您的回答,這是一個很好的替代解決方案 – 2010-09-30 23:19:10

相關問題