私は履歴レコードのテーブルを持っており、どちらも日付を持っているので履歴レコードが作成され、その履歴レコードに対してコメントを記録するコメントテーブルがあります。結合されたテーブルからレコードを選択するときは、可能であれば、各AテーブルレコードのB(結合)テーブルから最新のレコードを取得します。
私はテーブルを調べるときに、すべての履歴レコードと、それぞれの最新のコメントが必要です。残念ながら、以前の履歴レコードにコメントが追加された場合、このクエリは最新の履歴レコード(正しい)を返しますが、最新のコメント全体(不正確なもの)が返されるため、私が見ている履歴記録の最新のコメントの代わりに。
はここ
SELECT h.id
, c.id comment_id
, c.comment recent_comment
, h.*
FROM crm_device_history h
LEFT
JOIN crm_device_history_comments c
ON c.crm_device_history_id = h.id
AND c.id = (SELECT max(id)
FROM crm_device_history_comments
WHERE c.crm_device_history_id = h.id)
WHERE device_id = 147
AND crm_history_states_id >= 0
ORDER
BY h.id DESC
crm_device_historyテーブル
id
device_id
crm_history_states_id
userID
dateTime
system_comment
comment -> this field is to be dropped now we have a separate table
distributor_assignment
client_assignment
updated_date
created_date
crm_device_history_comments
id
crm_device_history_id
comment
user_id
updated_date
を試してみてください –
質問にスキーマ、サンプルデータ、現在の結果、期待される結果を追加してください。それは本当に役に立つでしょう。 –
私は最新の履歴レコード(h.id)とその行に最新のコメント(recent_comment)が表示されることを期待しています。私が実際に得たのは最新の履歴レコードですが、全体的な最新のコメントもあります(私が見ている履歴レコードに適用された最新のものではなく、コメントテーブルの最新のコメント) – Rich