有这些表格
并给予post_map.tag_id='1'
,我想得到:
entity_type表确定要查看哪个表,即存储哪个表entity_id。我的主要目标是将此表作为mysqli :: multi_query()或mysqli :: query()的结果,即不使用PHP多次往返于数据库;这个表可能有很多行,一次获得这个表会更有效率。
到目前为止我的尝试:
答案 0 :(得分: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'