Соединение таблиц на основе значения ссылочной таблицы

Есть эти таблицы
введите описание изображения здесь

и дано post_map.tag_id='1'Я хотел бы получить:
введите описание изображения здесь

Таблица entity_type определяет, в какой таблице будет выполняться поиск, т.е. в какой таблице entity_id хранится. Моя главная цель — получить эту таблицу в результате либо mysqli :: multi_query (), либо mysqli :: query (), т.е. без возврата PHP и отправлять в базу данных несколько раз; в этой таблице может быть много строк, и одновременное получение этой таблицы будет гораздо более эффективным.

Мои попытки пока:

  • Я пробовал предложение JOIN, но я не знаю, как использовать значение строки предыдущего SELECT в качестве имени таблицы для предложения JOIN.
  • Пробные Подготовленные Отчеты, но не могут сформировать ничего полезного.

1

Решение

Это может быть сделано с помощью IF () и JOIN. У меня есть решение для вас, запустите ниже запрос …

SELECT et.type,
IF(et.type='resource',r.resource_type_id,NULL) AS resource_type_id,
IF(et.type='resource',r.value,NULL) AS value,
IF(et.type='user',u.name,NULL) AS name,
IF(et.type='link',l.source,NULL) AS source,
IF(et.type='link',l.count,NULL) AS count
FROM `post_map` as pm
JOIN `entity_type` as et ON pm.entity_id = et.id
LEFT JOIN `resource` as r ON pm.entity_type_id=r.id
LEFT JOIN `user` as u ON pm.entity_type_id=u.id
LEFT JOIN `link` as l ON pm.entity_type_id=l.id
WHERE pm.tag_id='1'
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]