首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >表名依赖于主查询的另一个数据库的MySQL子查询

问表名依赖于主查询的另一个数据库的MySQL子查询
EN

Stack Overflow用户
提问于 2016-01-07 16:16:35
回答 1查看 1.4K关注 0票数 3

嗨,我正在尝试从另一个数据库中查询一个表( name : table_guest_id),其中表名的id依赖于主查询。以下是我的数据库的设置:

  • 三个表:事件、概要、table_guest_id
  • 两个数据库: main和来宾(下面的dbName只是为了说明清楚)
  • 主要内容:事件和概要文件
  • 来宾包含:table_guest_id(其中id = e.ID)

这是我的sql代码:

代码语言:javascript
复制
    public function getListAttendee($user)
    {
        $sql = "SELECT p.name e.user, e.ID, e.date 
                FROM events e, profile p
                WHERE p.user_id=e.user AND e.event_date >= CURDATE() 
                AND (SELECT COUNT(*) 
                     FROM dbName.table_guest_[??note: need to insert e.ID??] a 
                     WHERE a.event_id=e.ID AND a.user_id='{$user}' AND
                     a.status='invited') > 0";
     }

我已经记下了ID或e.ID将被插入的位置,但是它还没有工作。如果您有不同的解决方案来查询表的名称取决于主查询值的表,请告诉我。这个想法可能吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-07 17:22:48

似乎您正在尝试对SQL表名执行变量替换。

代码语言:javascript
复制
  FROM dbName.table_guest_[??note: need to insert e.ID??] a 

您不能在SQL中直接执行™。您需要编写php代码来生成表名,或者使用MySQL团队称为http://dev.mysql.com/doc/refman/5.7/en/sql-syntax-prepared-statements.html的字符串处理特性。

如果您的不同数据库驻留在同一台MySQL服务器上,则可以一次编写引用多个数据库的查询。只需给出数据库名和表名即可。例如,如果您有数据库db1和db2,您可以这样做。

代码语言:javascript
复制
 SELECT whatever
   FROM db1.events e
   JOIN db2.user_118 u ON whatever = whatever
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34660036

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档