1

MySQL クエリでいくつかのテーブルを結合し、従業員 ID 番号でリンクしています。

ID 番号はテーブル A と B で一意ですが、テーブル C には複数の行があり、各エントリに一意の日付 (文字列として格納) があります。

テーブル C の各従業員 ID 番号の最新の日付を特定し、テーブル C を ID 番号ごとに 1 つのエントリ (明らかに最新のもの) に制限する必要があります。

個々の従業員 ID 番号ごとに LIMIT を 1 に設定する方法がわかりません。

あなたの助けに感謝します。

4

2 に答える 2

2

以下のクエリは、サブクエリを使用して、すべてのonの最近の日付を取得します。EmployeeIDtableC

SELECT  a.*, b.*, c.*
FROM    tableA a
        INNER JOIN tableB b 
            ON a.EmployeeID = b.EmployeeID
        INNER JOIN tableC c
            ON a.EmployeeID = c.EmployeeID
        INNER JOIN
        (
            SELECT  EmployeeID, MAX(date) max_date
            FROM    tableC
            GROUP   BY  EmployeeID
        ) d ON  c.EmployeeID = d.EmployeeID AND
                c.Date = d.max_date
于 2013-03-09T22:03:15.007 に答える
0

あなたの質問で私が理解したことから:

select a.*, b.*, max(c.date) from A
     inner join B on A.id=B.id
     inner join C on A.id=C.id
     group by A.id

これにより、A の ID によってレコードがグループ化されます。つまり、A の各行の応答で行が取得されます (その ID によって一意に識別されるため)。同じ ID を持っているため、B でも同じことが起こります。次に、C では、A のレコードごとに複数のレコードがあるため、それらをグループ化して日付の最大値を取得すると、A ごとに C の 1 つの日付が返されます (各ケースの最大値)。

于 2013-03-09T23:06:30.353 に答える