Присоединение на CASE в MySQL - PullRequest
1 голос
/ 11 ноября 2010

Попытка реализовать полиморфные ассоциации в 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 вызывает синтаксическую ошибку. Как это можно правильно переписать?

1 Ответ

0 голосов
/ 11 ноября 2010

Короткий ответ: вы не можете заменять объединения построчно - но я считаю, что это решение того, чего вы пытаетесь достичь:

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'
...