php - Mysql从多个表中选择,每个月创建一个新表

标签 php mysql asterisk

我现在有3张表:cdr、cdr_201502和cdr_201503,下个月系统将创建一个新表cdr_201504,依此类推。我正在做一个 php 页面来从数据库中选择一些信息,我需要从所有表中进行选择,并且我需要自动化这件事,我可以使用联合选择或内部联接,但每个月我都需要为新的数据编写一个新的联合选择创建的表...表具有相同的列。请帮助我已经用谷歌搜索了所有页面,但找不到与我的需要相关的任何页面。

我无法将所有代码放在这里,但我可以举一个例子:

select * from cdr where src='470' and calltype like '%' 
and billable>'-1'  and datetime>'2015-01-01 00:00:00' and datetime 
<'2015-  03-30     23:59:59' order by datetime desc
union all
select * from cdr_201502 where src='470' and calltype like '%' 
and billable>'-1'  and datetime>'2015-01-01 00:00:00' and datetime 
<'2015-  03-30     23:59:59' order by datetime desc
union all 
select * from cdr_201503 where src='470' and calltype like '%' 
and billable>'-1'  and datetime>'2015-01-01 00:00:00' and datetime 
<'2015-  03-30     23:59:59' order by datetime desc;

下个月我将需要添加一个新的联合,那么如何自动执行此操作?

问题:我可以使用查询从information_schema中选择表吗 然后使用 select,或者创建一个触发器来更新表(但我再次需要每月更改触发器)?

最佳答案

第 1 部分:我可以使用查询从 information_schema 选择表,然后使用 select

我们可以使用查询从 information_schema 中获取表名

 SELECT table_name FROM information_schema.tables
 WHERE table_type = 'BASE TABLE'
 AND table_schema = 'database-name'
 AND table_name like 'cdr%';

如果我们遵循表名创建中的模式,我们还可以创建动态查询,我们可以根据日期时间戳将表名放入 $cdr 等变量中,并在查询中使用它来增加 $ 的值cdr 循环

select * from '".$cdr." ' where src='470' and calltype like '%'

第 2 部分:从具有相同结构的多个表中选择列

使用 UNION

(select * from cdr where src='470' and calltype like '%' )
UNION 
(select * from cdr_201502 where src='470' and calltype like '%' );

使用 ALIAS

SELECT cdr.id, cdr.name, cdr_201502.id 
FROM cdr
  INNER JOIN cdr_201502 on cdr.id = cdr_201502.id 

关于php - Mysql从多个表中选择,每个月创建一个新表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29348506/

相关文章:

php - 单击按钮时触发警报

php - Laravel 命名空间,它是如何工作的?

sip - Twilio 不使用 xml 上定义的用户名/密码

mysql - Asterisk AGI 和 Mysql 字符串变量

amazon-web-services - python中的AWS polly示例示例?

php - WordPress 在 get_posts 中使用通配符

php - mysql按包含字母和数字的数据的列排序

PHP 仅在第二次单击后才起作用

mysql - 如何做这个复杂的查询?

mysql - mysql中的累计公式