【问题标题】:Joining tables based on reference table value基于引用表值连接表
【发布时间】:2015-04-01 00:46:05
【问题描述】:

有这些表

给定post_map.tag_id='1',我想得到:

entity_type 表确定要查看的表,即存储实体 ID 的表。我的主要目标是获取此表作为 mysqli::multi_query() 或 mysqli::query() 的结果,即不使用 PHP多次往返于数据库;这个表可能有很多行,一次获取这个表会更有效率。

到目前为止我的尝试:

  • 我试过JOIN子句,但不知道如何使用之前SELECT的行值作为JOIN子句的表名。
  • 尝试了 Prepared Statments,但无法形成任何可用的东西。

【问题讨论】:

    标签: php mysql database join normalization


    【解决方案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'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-11
      • 1970-01-01
      • 2016-06-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-20
      • 1970-01-01
      相关资源
      最近更新 更多