【问题标题】:Work out timestamps / other data based on two MySQL tables根据两个 MySQL 表计算时间戳/其他数据
【发布时间】:2014-05-22 12:04:36
【问题描述】:

我的数据库中有两个表:

tickets
ticket_updates

每个表都有一个名为ticketnumber 的列匹配。 ticket_updates 中有时会有多行,而tickets 中只有一行

我希望能够显示来自tickets 的行数,其中status = 'Completed' 但今天已完成

ticket_updates 表中的每一行都有一个 datetime

由于ticket_updates 中有多行,tickets 中的每一行都需要从ticket_updates 中选择最新的datetime

【问题讨论】:

    标签: php mysql sql


    【解决方案1】:

    你应该可以通过一个简单的连接和一个小的 MySQL 日期函数来做到这一点:

    select
        count(sub.counter)
    from
        (
            select distinct
                ti.ticketnumber as counter
            from
                tickets ti
                join ticket_updates tu
                    on ti.ticketnumber=tu.ticketnumber
            where
                ti.status='Completed'
                and date(tu.datetime)=curdate()
        ) sub
    

    如果您的日期时间(假设这不是实际名称)包含日期和时间信息,您将需要去掉时间组件以将其正确地与 curdate() 返回的值进行比较,这只是今天的日期.

    MySQL date() 函数只返回日期和时间的日期部分。

    编辑:更正代码以解释@mituw16 正确指出的多重关系

    【讨论】:

    • 这可能会返回基于一对多关系表单票证到ticket_updates 的错误计数。
    • @mituw16 你是完全正确的,我已经更新了我的答案来解决这个问题。谢谢队友:)
    【解决方案2】:

    我将假设有一个链接这两个表的键。你可以试试这样的...

    select count(*) as TicketCount from tickets 
    join ticket_updates on ticket_updates.ticketnumber = tickets.ticketnumber 
    where tickets.status='Completed' and ticket_updates.datetime = CURDATE()
    group by ticket_updates.ticketnumber 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-04
      • 2020-04-03
      • 2014-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-13
      • 2023-04-06
      相关资源
      最近更新 更多