尝试在MySQL中实现多态关联。我认为代码看起来像这样:
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)
但CASE导致语法错误。如何正确地重写?
答案 0 :(得分: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'