これはよくある質問です。以前に質問したことがあり、さらにいくつか調べたことがありますが、それでも、これに基づいてクエリを実行しても、機能させることができません。参照: max(timestamp)に基づくMysql結合と右テーブルの最大値のmysqlLEFT結合
基本的に、私はさまざまなアイテム('chairs'、'tables')のテーブルを持っており、各タイプには、特定の椅子またはテーブルの独自のIDを持つレコードがあります。次に、現在の場所を含め、これまでに行ったすべての場所を保持する場所テーブルがあります。現在の場所は、MAXタイムスタンプで示されます。
私のクエリは、すべてのアイテムを取得し、現在の場所に参加することを目的としています。私は他の人が言ったことをフォローしましたが、それは私にとってはうまくいきません。どんな助けでも大歓迎です。
編集:どのように失敗するかは言いませんでした:レコードを取得して結合し、最大タイムスタンプを返しますが、MAX(タイムスタンプ)レコードに対応するレコード情報は返しません。したがって、正しいタイムスタンプが得られますが、フロアなどはMAXタイムスタンプのレコードからのものではありません。
ありがとう!
クエリ:
$q = "SELECT
'chairs' AS work_type,
chairs.id AS work_id,
chairs.title,
chairs.dimensions,
CurrentLocations.floor,
CurrentLocations.bin,
CurrentLocations.bay,
CurrentLocations.other
FROM chairs
LEFT JOIN (
SELECT
locations.id AS loc_id,
locations.work_type AS clwt,
locations.work_id AS clwi,
locations.floor,
locations.bin,
locations.bay,
locations.other,
MAX(locations.timestamp) AS latestLocation
FROM
locations
GROUP BY
locations.work_type, locations.work_id
) CurrentLocations
ON CurrentLocations.clwi = chairs.id AND CurrentLocations.clwt = 'chairs'
WHERE cur_loc LIKE '%19th Street%'
ORDER BY
FIELD(floor, 'Basement', '3rd Floor', '4th Floor', '5th Floor'),
bin,
bay,
other";