是否可以在没有准备语句的情况下使用动态表名在一个查询中执行此操作? [复制]
Posted
技术标签:
【中文标题】是否可以在没有准备语句的情况下使用动态表名在一个查询中执行此操作? [复制]【英文标题】:is it possible to do it in one query with dynamic table name without prepare statement? [duplicate] 【发布时间】:2017-02-23 09:50:38 【问题描述】:我有一个调查记录表,我想统计最新的调查记录,字段“完成”是“Y”,而最新的调查名称在另一个表中,创建日期,也就是说,表名是动态的,
select 'complete' count(*)
from(
select 'survey_name'
from survey
Where active=''Y''
order by cratedate desc
limit 1
)
但它不能工作
记录表:(名称是动态的)
id | complete | submitdate
调查表:
survay_name | active | cratedate
我知道应该通过prepare语句来完成,但是我的系统(joomla + plotalot)只接受一个查询。
【问题讨论】:
调查表和记录表有什么联系? 问题是这两个表之间没有链接。 【参考方案1】:您需要在 Survey 表格中添加“id”列 当然,ID 必须链接 SURVEY 和 RECORD 表
那么,你可以使用下面的查询
SELECT COUNT(r.complete) as complete, s.survay_name, s.createDate
FROM survey s
LEFT JOIN record r ON s.id = r.id
WHERE s.active = 'Y' AND r.complete = 'Y'
【讨论】:
嗨AKZhang,感谢您的回复,但该表是由另一个系统创建的,所以我无法更改表结构。 嗨@eagle 那么你不能链接这两个表..如果你想获得 COUNT,那么你将无法获得 survay_name.. 或者,你有另一个表ID 和 survay_Name 之间的链接? 不,我认为应该使用子查询或准备语句。以上是关于是否可以在没有准备语句的情况下使用动态表名在一个查询中执行此操作? [复制]的主要内容,如果未能解决你的问题,请参考以下文章