gpt4 book ai didi

mysql - SQL 查询 - 从具有相同 ID 的多行中获取结果

转载 作者:行者123 更新时间:2023-11-29 06:16:22 24 4
gpt4 key购买 nike

我已经在这里阅读了一些内容,还使用 ​​Google 找到了我的问题的答案,但我没有找到对我有帮助的东西。我希望有人能给我一个问题的答案。

我确实有一个数据库,其中有一个名为“tickets”的表。现在,如果用户创建了一张新票,则会在数据库中创建一个条目。如果管理员现在给出答案,将在表中创建一个新行,具有相同的“ticketnumber”。这看起来像这里的屏幕截图: enter image description here

第一行是新创建的工单,第二行是管理员的回答!现在我需要一个查询来获取以下信息:管理员的响应时间!我需要知道 stamp_closed 和 stamp_opened 之间的差异有多长,但响应时间必须来自管理员,这是我的问题,因为在管理员的行中未记录 stamp_opened。

如何创建 SELECT 查询以获取:来自管理员的 pers_id,来自管理员的 stamp_opened 和来自用户的 stamp_closed?

这是我到目前为止尝试过的:

SELECT ticket.pers_id, ticket.stamp_created as starttime, ticket.stamp_closed as endtime, count(ticket.pers_id) as cnt, user.firstname, user.lastname, (sum(ticket.stamp_closed)-sum(ticket.stamp_created)) as average 
FROM tickets ticket
inner join userlist user on ticket.pers_id=user.pers_id
where ticket.ticketnumber=54094

问题是我得到了用户的 pers_id 和用户的 stamp_closed 而不是管理员的 pers_id 和管理员的 stamp_closed!

希望有人能帮帮我!

提前致谢!

最佳答案

我不确定我是否完全理解这里的问题,但要回答这个具体问题:

How can I create SELECT-query to get: pers_id from Admin, stamp_opened from Admin and stamp_closed from User?

您需要使用 Conrad 在他上面的评论中正确提到的自连接。您可以采用以下方法:

SELECT          tAdmin.pers_id,
tAdmin.stamp_opened AS starttime,
tUser.stamp_closed AS endtime,

FROM tickets tUser
INNER JOIN tickets tAdmin ON tUser.ticketnumber = tAdmin.ticketNumber
WHERE tAdmin.stamp_created = 0
AND tUser.stamp_created <> 0
AND tUser.ticketnumber = 54094

上述查询只会为您获取此特定票号 (54094) 的结果。如果您希望 SQL 查询获取所有票号的结果,只需从 WHERE 子句中删除最后一个条件:

SELECT          tAdmin.pers_id,
tAdmin.stamp_opened AS starttime,
tUser.stamp_closed AS endtime,

FROM tickets tUser
INNER JOIN tickets tAdmin ON tUser.ticketnumber = tAdmin.ticketNumber
WHERE tAdmin.stamp_created = 0
AND tUser.stamp_created <> 0

最后,我看到您正在尝试查找工单的响应时间。即工单创建时间与关闭时间之间的差值。您可以按如下方式执行此操作:

SELECT          tAdmin.pers_id,
tAdmin.stamp_opened AS starttime,
tUser.stamp_closed AS endtime,
(tUser.stamp_closed - tUser.stamp_created) AS 'Current request Service Response Time'
FROM tickets tUser
INNER JOIN tickets tAdmin ON tUser.ticketnumber = tAdmin.ticketNumber
WHERE tAdmin.stamp_created = 0
AND tUser.stamp_created <> 0
AND tUser.ticketnumber = 54094

再次注意,这仅适用于当前记录。如果您想要所有记录的平均值以及当前数据,您可以这样做:

 SELECT         tAdmin.pers_id,
tAdmin.stamp_opened as starttime,
tUser.stamp_closed as endtime,
(tUser.stamp_closed - tUser.stamp_created) AS 'Current request Service Response Time',
(SELECT (SUM(stamp_closed) - SUM(stamp_created))
FROM Tickets) AS 'Average Service Response Time'
FROM tickets tUser
INNER JOIN tickets tAdmin ON tUser.ticketnumber = tAdmin.ticketNumber
WHERE tAdmin.stamp_created = 0
AND tUser.stamp_created <> 0
AND tUser.ticketnumber = 54094

您可以将 WHERE 子句替换为您拥有的任何业务规则(在您的 SQL 中)以唯一区分用户和管理员。

希望这有帮助!!!

关于mysql - SQL 查询 - 从具有相同 ID 的多行中获取结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35703776/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com