我正在 mvc .net core 中制作一个学校项目,人们应该能够发送请求帮助并将其显示在屏幕上,我的困难在于其他人应该能够想要同样的部分帮助,但我只想使用最旧的用户 ID 显示一次请求,并能够计算有多少人有相同的请求。
现在我用了3张桌子
tableUser - 存储所有用户信息
帮助列表 - 存储问题的描述以及一些其他信息以将其发送到正确的视图
FH 存储来自帮助列表的 id 和用于连接的用户 id,并使人们从帮助列表 id 请求相同的帮助
我尝试过以下 SQL,但我不明白如何在计算描述时获取最旧的用户 ID,
SELECT Count (Beskrivning) AS HANTAL, Beskrivning, Hjalplista.HID
From ((FH INNER JOIN UserTable ON UserTable.UID = FH.UID)
INNER JOIN Hjalplista ON Hjalplista.HID = FH.HID)
WHERE Hjalplista.KID = @KID AND Hstatus= 'Aktiv'
GROUP BY Beskrivning, Hjalplista.HID, FH.Fdatum
ORDER BY Fdatum ASC
对不起瑞典语,这是“翻译”版本:
SELECT Count (Description) AS Hcount, Description, helplist.HID
From ((FH INNER JOIN UserTable ON UserTable.UID = FH.UID)
INNER JOIN helplist ON helplist.HID = FH.HID)
WHERE helplist.KID = @KID AND Hstatus= 'Active'
GROUP BY Description, helplist.HID, FH.Fdate
ORDER BY Fdate ASC
(KID 用于仅选择与某人屏幕上的视图相同的视图)
您可以修改 SQL 查询以使用子查询来选择与每个描述关联的最旧的用户 ID。然后,您可以将此子查询与主查询连接起来,以根据最旧的用户 ID 过滤掉重复的描述。具体方法如下:
SELECT
COUNT(*) AS Hcount,
h.Description,
h.HID
FROM
helplist AS h
INNER JOIN
FH AS f ON h.HID = f.HID
INNER JOIN
UserTable AS u ON f.UID = u.UID
WHERE
h.KID = @KID
AND h.Hstatus = 'Active'
AND f.Fdatum = (
SELECT
MIN(Fdatum)
FROM
FH
WHERE
HID = h.HID
)
GROUP BY
h.Description, h.HID
关键部分是
WHERE
子句中的子查询。此子查询选择与每个 MIN
关联的最小 (Fdatum
) HID
,有效地为我们提供每个描述的最旧的用户 ID。
此查询应为您提供每个唯一描述的计数以及与其关联的最旧的用户 ID。