需要帮助根据日期使用子查询构建MySQL语句

时间:2014-12-12 20:11:13

标签: mysql sql subquery

我需要从我们的票务系统中提取一组非常具体的结果。首先,有效的部分......这个查询成功地抓取了一组客户的所有新票和开票。

SELECT COUNT(tickets.ticketid)
FROM tickets, mastergroups AS groups, clients 
WHERE clients.clientid = tickets.clientid 
AND clients.name = groups.name 
AND groups.fullname LIKE 'GROUP NAME%' 
AND (tickets.status = 1 or tickets.status = 2);

然而,下一部分一直在踢我的屁股。以下是我需要提取的相关表格信息。

table:ticketdata

ticketid int
datatype int
ticketdatadate timestamp

表:门票

ticketid int (corresponds with ticketid above)
clientid int (corresponds with clientid in the above query)

上述查询中列出了另外两个表,但它们仅与客户端分组有关。如果您需要有关的信息,我会提供,但使用门票是我遇到麻烦的地方。

对于此查询返回的每个票证,我需要找出最近的活动是什么,最终查询需要返回一个等于特定数据类型的数字。 (数据类型以数字形式记录在数据库中,相关的数据类型为2.)换句话说,如果3个故障单上的最新数据类型为2,而其他4个故障单上的最新数据类型为1,则需要返回3。 / p>

过去我只会查询最初的故障单列表,然后使用PHP构建单独的查询以获得我需要的结果。不幸的是(无论如何),如果要这样做,它需要是一个纯粹的MySQL实现。我并不是MySQL的新手,但我也从未真正需要比上述查询更先进的东西,所以请保持温和。我查看了有关JOIN子句的文档和示例,但到目前为止没有点击任何内容。哎呀,我甚至不确定JOIN是我需要的......所以我呼吁别人 - 你有什么例子或建议可以给这里吗?这甚至可以用一个SQL语句吗?

提前感谢您提供任何帮助!

编辑: 好的,试图澄清......对不起,我是这些部分的新手。

“门票”表是所有门票的主记录。每个票证ID只会有一条记录。

一个例子;我为格式化道歉:

TicketID    ClientID    ProjectID   ComputerID  Status  Subject Time    Priority    UserID  DueDate StartedDate ContactDate UpdateDate  RequestorEmail  CCEmail Level   Category    LocationID  ExternalID  MonitorId   GroupId MobileDeviceId  GUID    DeviceID
79924   11  0   15648   1   subject (redacted)  0   14  0   2014-12-14 07:37:10 2014-12-15 07:37:10 2014-12-15 07:45:02 2014-12-15 07:44:02 email@address  username     1   5   0   0   0   0   0       0

另一方面,“ticketdata”表包含故障单中所有活动的历史记录。因此,它可以具有与每个票证ID相关联的多个记录。事实上,我认为它必须至少有两条记录,因为首次打开故障单时会生成一条记录,而故障单关闭时会产生另一条记录。任何客户通信,文档附件,执行的工作等也将在该表中生成新记录。每条记录都有一个与其关联的日期,用于创建该记录的时间。

TicketDataID    TicketID    DataType    Data    Attachment  Address UserID  TicketDataDate
363831  79924   1   Message associated with ticket request (redacted)       email@address  username 0   2014-12-15 07:37:10
363835  79924   22  Second message associated with ticket request (redacted)        user    0   2014-12-15 07:44:02

所以,说到这里,我需要一些独特的门票。需要包含ticket表,因为它包含对我需要的客户端ID的引用。但是,ticketdata表包含我需要绘制的日期时间值,但前提是给定故障单的最新记录的DataType等于2.

希望我不仅让水更加泥泞。

0 个答案:

没有答案