ホームページ  >  に質問  >  本文

重複した行を削除し、最新の作業ログ エントリのみを保持します。

<p>このクエリを作成しましたが、機能します。問題は、ジョブログごとに行が表示されることです。イベントごとの最新の作業ログが必要なだけです。 </p> <pre class="brush:php;toolbar:false;">SELECT DISTINCT `HPD:ヘルプ デスク`.`インシデント番号` AS Incident_Number、 `HPD:ヘルプデスク`.`ステータス` AS ステータス、 `HPD:ヘルプ デスク`.`優先度` AS 優先度、 `HPD:ヘルプ デスク`.`割り当てられたグループ` AS Assigned_Group、 `HPD:ヘルプ デスク`.`担当者` AS 担当者、 `HPD:ヘルプ デスク`.`提出日` AS Submit_Date, `HPD:ヘルプ デスク`.`最終更新日` AS Last_Modified_Date, `HPD:ヘルプデスク`.`説明` AS 説明、 `HPD:ヘルプ デスク`.`提出者` AS 提出者、 `HPD:Search-Worklog`.`Worklog の説明` AS Worklog_Description、 `HPD:Search-Worklog`.`Work Log ID` AS Work_Log_ID から 「HPD:ヘルプデスク」 INNER JOIN `HPD:Search-Worklog` on (`HPD:Search-Worklog`.`InstanceId` = `HPD:Help Desk`.`InstanceId`) どこ (`HPD:ヘルプ デスク`.`ステータス` in ('割り当て済み','保留中','進行中') および `HPD:ヘルプ デスク`.`送信日` >= $__from/1000 および `HPD:ヘルプ デスク`.`送信日` <= $__to/1000) 注文方法 `HPD:ヘルプ デスク`.`提出日` ASC 制限 20</pre> <p>HPD:Help Desk、HPD:Worklog、および HPD:Search-Worklog フォームを試しました。また、CASE ステートメントを使用して、各イベントの最新/最大のワークログ ID を表示しようとしましたが、成功しませんでした。明らかな/単純な何かが欠けていると確信しています。 </p>
P粉916760429P粉916760429413日前599

全員に返信(1)返信します

  • P粉252423906

    P粉2524239062023-08-11 12:45:29

    ウィンドウ関数をサポートする最新バージョンの MySQL (またはそのバリアント) を使用していると仮定すると、「最新」を取得する非常に効率的な方法は、row_number() over() を使用することです。 over 句で partition by を使用して行番号リセットのトリガーを制御し、order by を使用してパーティション内のどの行に行番号 1 を取得するかを制御します。ここで、「最新」を取得するには、これを行うためのワークログ テーブル内の列が必要です。テーブル内にタイムスタンプ列 (worklog_entry_date) が存在すると仮定しています。実際にその列を置き換える必要があります。 「最新」を決定します)。現在のクエリを 1 レベルネストして、行番号 1 でフィルタリングできるようにします。これらが「最新」行になります: リーリー 注: 行番号が存在する場合は、

    select unique

    を使用する必要はありません。通常は使用しないようにしてください。また、テーブルのエイリアスを自分で使用して、コードを簡素化します。

    返事
    0
  • キャンセル返事