Я ищу запрос, который динамически выбирается из ACTIVITY, который затем применяется на основе ACTIVITY.what («posts_blog» или «posts_video») для получения соответствующей информации из таблицы BLOG или VIDEO.
Интересно, можно ли A.
это сделать?B.
Если это возможно, то как?
Мои три таблицы:
ACTIVITY
=========
id
what - can either be 'posted_blog' or 'posted_video'
reference
user
BLOG
=========
id
title
VIDEO
=========
id
title
Проблема, с которой я сталкиваюсь, заключается в том, где дело обстоит, и, возможно, правильное использование?
Пока я пыталсяследующим образом:
$result = mysql_query("SELECT ACTIVITY.user,CASE ACTIVITY.what WHEN "posted_blog" THEN (SELECT BLOG.title FROM BLOG WHERE BLOG.id=ACTIVITY.reference) WHEN "posted_video" THEN (SELECT VIDEO.title FROM VIDOES WHERE VIDEOS.id=ACTIVITY.reference) END FROM ACTIVITY WHERE ACTIVITY.user='10' ORDER BY ACTIVITY.id DESC ")or die(mysql_error());
Решение:
mysql_query("SELECT CASE ACTIVITY.what
WHEN 'posted_video' THEN(SELECT VIDEO.title FROM VIDEO WHERE
VIDEO.id=ACTIVITY.reference)
WHEN 'posted_blog' THEN(SELECT BLOG.title FROM BLOG WHERE
BLOG.id=ACTIVITY.reference)END AS title
FROM ACTIVITY WHERE ACTIVITY.user='10' AND (ACTIVITY.action='posted_video' OR
ACTIVITY.action='posted_blog')")or die(mysql_error());
Теперь, если я пытаюсь получить дополнительный столбец из таблицы VIDEO или BLOG, он выдает ошибку. Операнд должен содержать 1 столбец.(ы).Означает ли это, что я не могу выбрать два столбца?Должен ли я тогда переписать оператор case для каких-либо дополнительных столбцов, которые мне нужны из этих таблиц?