MySQL:确定多个表中是否存在日期

时间:2014-10-09 20:21:26

标签: mysql

我正在建立一个月度统计表格系统。如果没有为某个月设置统计数据,系统的首页会显示“+”,如果已设置统计数据,则会显示[铅笔字形]。

首页看起来与此类似(铅笔字形替换为管道)

Year 2014
Jan  Feb  Mar  Apr  May  Jun  Jul  Aug  Sep  Oct  Nov  Dec
 +    +    +    |    +    |    |    |    |    |    |    |

Year 2013
Jan  Feb  Mar  Apr  May  Jun  Jul  Aug  Sep  Oct  Nov  Dec
 +    +    +    +    +    |    |    |    +    |    +    |

......等等。

足够简单。

但问题是我不只是检查一个表,看看它的“month_id”字段是否等于月份;我正在检查7个不同的表。所有7个表都有公共字段“month_id”。

如果7个表中的任何一个包含与当前月份匹配的month_id,则应显示铅笔字形。如果没有,则为'+'。

我不需要为此生成HTML或PHP的任何帮助,只需提供有关查询数据库的有效方法的建议。

1 个答案:

答案 0 :(得分:2)

这是一个解决方案:

SELECT
    (SELECT COUNT(*) FROM table1 WHERE month_id = MONTH(CURDATE()))
    + (SELECT COUNT(*) FROM table2 WHERE month_id = MONTH(CURDATE()))
    + (SELECT COUNT(*) FROM table3 WHERE month_id = MONTH(CURDATE()))
    + (SELECT COUNT(*) FROM table4 WHERE month_id = MONTH(CURDATE()))
    + (SELECT COUNT(*) FROM table5 WHERE month_id = MONTH(CURDATE()))
    + (SELECT COUNT(*) FROM table6 WHERE month_id = MONTH(CURDATE()))
    + (SELECT COUNT(*) FROM table7 WHERE month_id = MONTH(CURDATE()));

如果结果大于0,则七个表中至少有一个匹配的行。