2010-11-11 35 views
1

試圖在MySQL中實現多態關聯。我認爲代碼可能是這個樣子:加入MySQL中的CASE

SELECT 
... 
FROM 
resource 
LEFT JOIN (
    CASE resource.owner_type 
     WHEN 'meeting' THEN 
     (SELECT * FROM meeting) as owner 
     WHEN 'todo' THEN 
     (SELECT * FROM todo) as owner 
     END) 

但此案引起語法錯誤。這怎麼能被正確地重寫?

+1

相關的http://計算器。 com/questions/1255492/conditional-join-in-mysql – 2010-11-11 08:01:11

+2

一個問題是確保您在輸出中擁有一組一致的列 - 您不能讓會議行包含來自待處理行的不同數量的列。 – 2010-11-11 08:03:58

回答

0

簡短的回答是,你不能代替連接在行通過行的基礎上 - 但我相信這是你想達到什麼樣的解決方案:

SELECT 
... 
FROM 
resource 
LEFT JOIN meeting ON resource.id=meeting.resource_id 
WHERE resource.owner_type='meeting' 
UNION 
SELECT 
... 
FROM 
resource 
LEFT JOIN todo ON resource.id=todo.resource_id 
WHERE resource.owner_type='todo'