-4

全てにおいて良い日、

私は初心者の PHP プログラマーです。PHP MySQL プログラムで最新のレコードを表示する方法について、助けやアイデアを求めたいと思います。

ゴール:

マスター テーブルの最新リビジョンのレコードのみを表示します。例えば、

#################################
id     filename    revision
1      math12       1
2      math12       2
3      science43    1
4      science43    2
5      science43    3
3      logic13      1
4      logic13      2
5      logic13      3
#################################

すべてのレコードを取得するときの目標は、最新バージョンのレコードのみが表示されることです。

#################################
id     filename    revision
2      math12       2
5      science43    3
5      logic13      3
#################################

このような..

私の問題で私を助けてくれませんか..

どうもありがとう..

この規範の問題点は何ですか??

SELECT 
                                imaster_tbl.id,
                                imaster_tbl.die_name,
                                imaster_tbl.part_name,
                                imaster_tbl.drawing_number,
                                imaster_tbl.drawing_part_number,
                                imaster_tbl.sub_letter,
                                imaster_tbl.specs,
                                imaster_tbl.file_path,
                                idrawing_type_tbl.drawing_type,
                                idie_type_tbl.die_type,
                                irevision_tbl.revision,
                                irelay_type_tbl.relay_type  FROM imaster_tbl
                                LEFT JOIN idrawing_type_tbl ON imaster_tbl.drawing_type_id = idrawing_type_tbl.drawing_type_id
                                LEFT JOIN idie_type_tbl ON imaster_tbl.die_type_id = idie_type_tbl.die_type_id
                                LEFT JOIN irelay_type_tbl ON imaster_tbl.relay_type_id = irelay_type_tbl.relay_type_id 
                                LEFT JOIN irevision_tbl ON imaster_tbl.revision_id = irevision_tbl.revision_id 
                                WHERE revision = (SELECT MAX(revision) FROM imaster_tbl WHERE drawing_part_number = drawing_part_number)

-マーティン

4

3 に答える 3

0

サブクエリを使用してこのクエリを記述する方法は多数ありますが、その 1 つを次に示します。

select * from table t1 where revision = (select max(revision) from table t2 where t2.filename = t1.filename)

別の方法を希望する場合はANY、 、ALLEXISTSまたは演算子を使用して記述することもできます。NOT EXISTS

于 2013-06-13T01:19:12.667 に答える
0

最初にキーと最大リビジョンを使用してサブクエリを作成し、それを結合して残りのレコードを取得します。

SELECT 
  tablename.* 
FROM 
  tablename
  INNER JOIN (
    SELECT 
      filename, MAX(revision) AS max_revision 
    FROM 
      tablename 
    GROUP BY 
      filename
  ) AS max_revisions
  ON tablename.filename = max_revisions.tablename
  AND tablename.revision = max_revisions.max_revision
于 2013-06-13T01:38:11.570 に答える