Есть эти таблицы
и дано post_map.tag_id='1'
Я хотел бы получить:
Таблица entity_type определяет, в какой таблице будет выполняться поиск, т.е. в какой таблице entity_id хранится. Моя главная цель — получить эту таблицу в результате либо mysqli :: multi_query (), либо mysqli :: query (), т.е. без возврата PHP и отправлять в базу данных несколько раз; в этой таблице может быть много строк, и одновременное получение этой таблицы будет гораздо более эффективным.
Мои попытки пока:
Это может быть сделано с помощью 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'
Других решений пока нет …