1

チェック タイプ「checks」を選択するクエリを使用し、ログ ファイルを調べて、このチェックを参照する最新のログ エントリを見つけます。

SELECT checks.*, logs.last_completed_on, logs.completed_by
    FROM checks INNER JOIN 
         (
             SELECT check_id, MAX(completed_on) AS last_completed_on,
             completed_by FROM checks_log GROUP BY check_id
          ) logs    
ON checks.id = logs.check_id 

このクエリは機能しますが、ビューを作成する必要があります。ビューを使用したのはこれが初めてなので、それらについてはよくわかりませんが、このタイプのクエリでは不可能だと読みました...

私の質問は、何らかの方法でそれを再構築する方法があったかどうかです?

別の解決策は、テーブル内のすべての行の特定のチェック ID でこのクエリを呼び出すことでしょうか? それは悪い習慣に聞こえます...そして遅いですが、よくわかりません。

ありがとう

4

2 に答える 2

0

fromMySQL のビューは、句内のサブクエリを処理できません。したがって、多少異なるロジックが必要になります。

このバージョンは動作するはずです:

SELECT c.*, cl.completed_on as last_completed_on, cl.completed_by
FROM checks c INNER JOIN 
     checks_log cl
     ON c.check_id = cl.check_id
WHERE cl.completed_on = (SELECT MAX(cl2.completed_on)
                         FROM checks_log cl2 
                         WHERE cl2.check_id = cl.check_id
                        );

SELECTMySQL ではand句でサブクエリを使用できるFROMため、これで問題ありません。

于 2015-06-17T17:46:33.040 に答える
0

クエリが正しく機能している限り、そこからビューを作成できます。
CREATE VIEW {insertnamehere} as (insertyourqueryhere)
括弧の有無を試してください。使用しているツールがわかりません*

于 2015-06-17T17:47:14.753 に答える