有这些桌子
考虑到post_map.tag_id='1',我想得到:
entity_type table确定要查找的表,即存储在哪个表entity_id中。我的主要目标是将此表作为mysqli::multi_query()或mysqli::query()的结果,即不需要php多次往返于数据库;此表可能有许多行,一次获取此表将更加高效。
我到目前为止的尝试:
我试过join子句,但不知道如何使用previor select的行值作为join子句的表名。
试过准备好的支架但不能形成任何有用的东西。

最佳答案

它可以通过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'

08-25 12:47
查看更多