Alih keluar baris pendua dan simpan hanya entri log kerja terkini
P粉916760429
P粉916760429 2023-08-10 17:25:56
0
1
639
<p>Saya mencipta pertanyaan ini dan ia berfungsi. Masalahnya ialah ia menunjukkan baris untuk setiap log kerja. Saya hanya memerlukan log kerja terkini untuk setiap acara. </p> <pre class="brush:php;toolbar:false;">SELECT DISTINCT `HPD:Meja Bantuan`.`Nombor Insiden` AS Insiden_Nombor, `HPD:Help Desk`.`Status` AS Status, `HPD:Meja Bantuan`.`Keutamaan` SEBAGAI Keutamaan, `HPD:Help Desk`.`Assigned Group` AS Assigned_Group, `HPD:Meja Bantuan`.`Pemegang Tugas` SEBAGAI Penerima, `HPD:Meja Bantuan`.`Tarikh Serah` AS Tarikh_Serah, `HPD:Help Desk`.`Tarikh Terakhir Diubahsuai` AS Last_Modified_Date, `HPD:Meja Bantuan`.`Penerangan` SEBAGAI Penerangan, `HPD:Meja Bantuan`.`Penyerah` SEBAGAI Penyerah, `HPD:Search-Worklog`.`Worklog Description` AS Worklog_Description, `HPD:Search-Worklog`.`ID Log Kerja` AS Work_Log_ID DARI `HPD:Meja Bantuan` SERTAI DALAM `HPD:Search-Worklog` dihidupkan (`HPD:Search-Worklog`.`InstanceId` = `HPD:Help Desk`.`InstanceId`) DI MANA (`HPD:Meja Bantuan`.`Status` dalam ('Ditugaskan', 'Belum selesai', 'Sedang Berlangsung') Dan `HPD:Meja Bantuan`.`Tarikh Serah` >= $__dari/1000 dan `HPD:Meja Bantuan`.`Tarikh Serah` <= $__kepada/1000) PERINTAH OLEH `HPD:Meja Bantuan`.`Tarikh Serah` ASC HAD 20</pra> <p>Saya telah mencuba borang HPD:Help Desk, HPD:Worklog dan HPD:Search-Worklog. Saya juga cuba menggunakan pernyataan CASE untuk hanya memaparkan ID log kerja terkini/maksimum untuk setiap acara, tanpa kejayaan. Saya pasti saya kehilangan sesuatu yang jelas/mudah. </p>
P粉916760429
P粉916760429

membalas semua(1)
P粉252423906

Dengan mengandaikan anda menggunakan versi terbaru MySQL (atau varian daripadanya) yang menyokong fungsi tetingkap, cara yang sangat berkesan untuk mendapatkan "terkini" adalah dengan menggunakan row_number() over()。在over子句中使用partition by来控制什么会触发行编号重置,并使用order by来控制分区中获得行号1的行。现在,要获取“最新”的需要在worklog表中有一列来实现这个功能 - 我假设有一个时间戳列(worklog_entry_date存在于该表中(worklog_entry_date) di mana anda perlu menggantikan lajur yang sebenarnya menentukan "terbaru"). Sarang pertanyaan semasa satu tahap supaya anda boleh menapis untuk baris nombor 1 - ini akan menjadi baris "terkini":

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

Nota: Anda tidak perlu menggunakan select distinct apabila penomboran baris hadir - cuba elakkan menggunakannya secara umum. Juga, gunakan alias jadual sendiri untuk memudahkan kod anda.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!