MySQL关于计算值的连接表

时间:2012-08-15 15:56:02

标签: mysql

我不确定这是否可行,但现在就去了。

我正在使用MySQL,需要完成一个产生如下输出的语句。

我有一个包含completedate字段和enquirydate字段的表。

我需要获得这些字段之间时间差的数据,我有以下代码

SELECT DATE (completedate) - DATE (enqdate) AS `timediff`, COUNT(*) AS TotalCount
FROM cia_enquiry
WHERE (DATEDIFF(CURDATE(), enqdate) < 30) AND completedate > 1
GROUP BY `timediff`
ORDER BY `timediff` ASC

上述代码只输出日期与过去30天内的总数之间的天数(并且不计算那些未完成的条目)

我现在需要在另一个表中引用“timediff”结果并从该表中提取另一个字段。

例如,如果timediff = 1,那么我们需要在另一个表中找到id为1并从该表中返回description字段。

最终我们应该得到类似于

的东西

timeDiff测量TOTALCOUNT描述
0 52 24小时内
1 13 24-48hrs
等等.........

2 个答案:

答案 0 :(得分:1)

可以做到;你有两个选择

  1. 使用查询结果创建一个临时表,然后将此表与第二个表
  2. 连接
  3. 将您的第一个查询用作子查询,并将其与第二个表连接
  4. 选项1

    create temporary table temp_tbl
    select
       ...
    ;
    # Important: create the indexes you need
    alter table temp_tbl
       add index index1(field1), ... ;
    # Now join your second table
    select a.*, b.*
    from temp_tbl as a join tbl2 as b on ...;
    

    选项2

    select a.*, b.*
    from (
        select ... # here is your query
        ) as a join tbl2 as b on ...
    

    希望这有助于你

答案 1 :(得分:0)

日期计算会给你一堆价值小数点......

你应该使用ROUND()

或查找CEILFLOOR个功能。