Entfernen Sie doppelte Zeilen und behalten Sie nur die neuesten Arbeitsprotokolleinträge
P粉916760429
P粉916760429 2023-08-10 17:25:56
0
1
641
<p>Ich habe diese Abfrage erstellt und sie funktioniert. Das Problem besteht darin, dass für jedes Jobprotokoll Zeilen angezeigt werden. Ich benötige lediglich das aktuelle Arbeitsprotokoll für jedes Ereignis. </p> <pre class="brush:php;toolbar:false;">SELECT DISTINCT „HPD:Help Desk“. „Incident Number“ AS Incident_Number, „HPD:Helpdesk“. „Status“ AS-Status, „HPD:Help Desk“. „Priorität“ AS-Priorität, „HPD:Help Desk“. „Zugewiesene Gruppe“ AS Assigned_Group, „HPD:Help Desk“. „Beauftragter“ AS Beauftragter, `HPD:Help Desk`.`Submit Date` AS Submit_Date, „HPD:Help Desk“. „Datum der letzten Änderung“ AS Last_Modified_Date, `HPD:Help Desk`.`Description` AS Beschreibung, `HPD:Help Desk`.`Submitter` AS Submitter, `HPD:Search-Worklog`.`Worklog Description` AS Worklog_Description, „HPD:Search-Worklog“. „Arbeitsprotokoll-ID“ AS Work_Log_ID AUS „HPD:Helpdesk“. INNER JOIN `HPD:Search-Worklog` auf (`HPD:Search-Worklog`.`InstanceId` = `HPD:Help Desk`.`InstanceId`) WO („HPD:Help Desk“. „Status“ in („Zugewiesen“, „Ausstehend“, „In Bearbeitung“) Und `HPD:Help Desk`.`Submit Date` >= $__from/1000 und `HPD:Help Desk`.`Submit Date` <= $__to/1000) SORTIEREN NACH „HPD:Helpdesk“. „Einreichdatum“ ASC LIMIT 20</pre> <p>Ich habe die Formulare HPD:Help Desk, HPD:Worklog und HPD:Search-Worklog ausprobiert. Ich habe auch versucht, mit einer CASE-Anweisung einfach die neueste/maximale Arbeitsprotokoll-ID für jedes Ereignis anzuzeigen, ohne Erfolg. Ich bin mir sicher, dass mir etwas Offensichtliches/Einfaches fehlt. </p>
P粉916760429
P粉916760429

Antworte allen(1)
P粉252423906

假设使用支持窗口函数的最新版本的MySQL(或其变体),获取“最新”的一种非常有效的方法是使用row_number() over()。在over子句中使用partition by来控制什么会触发行编号重置,并使用order by来控制分区中获得行号1的行。现在,要获取“最新”的需要在worklog表中有一列来实现这个功能 - 我假设有一个时间戳列(worklog_entry_date存在于该表中(worklog_entry_date),您需要替换实际确定“最新”的列)。将当前查询嵌套一层,以便您可以过滤行号为1的情况 - 这些将是“最新”的行:

SELECT
    *
FROM (
    SELECT
          h.`Incident Number` AS Incident_Number
        , h.`Status` AS STATUS
        , h.`Priority` AS Priority
        , h.`Assigned Group` AS Assigned_Group
        , h.`Assignee` AS Assignee
        , h.`Submit Date` AS Submit_Date
        , h.`Last Modified Date` AS Last_Modified_Date
        , h.`Description` AS Description
        , h.`Submitter` AS Submitter
        , w.`Worklog Description` AS Worklog_Description
        , w.`Work Log ID` AS Work_Log_ID
        , row_number() over(partition by h.`Incident Number`
                            order by w.worklog_entry_date DESC) as rn
    FROM `HPD: HELP Desk` h
    INNER JOIN `HPD: Search - Worklog` w ON w.`InstanceId` = h.`InstanceId`
    WHERE h.`Status` IN ('Assigned', 'Pending', 'In Progress')
        AND h.`Submit Date` >= $_ _from / 1000
        AND h.`Submit Date` <= $_ _to / 1000
    ) d
WHERE d.rn = 1
ORDER BY
      d.`Submit Date` ASC 
LIMIT 20

注意:当行编号存在时,您不需要使用select distinct - 一般情况下尽量避免使用它。此外,请自己使用表别名来简化代码。

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!