0

私は2つのテーブルから最新の更新をリストしようとしていdoc_to_doますdoc_bug_tracker.以下は私のテーブル構造です

doc_to_do ここに画像の説明を入力

doc_bug_tracker ここに画像の説明を入力

これが私の現在のクエリです:

$sth = $this->db->prepare('SELECT p.*, 
        dtd.projects_id as dtd_projects_id, dtd.content as dtd_content, dtd.date_modified as dtd_date_modified,
        dbt.projects_id as dbt_projects_id, dbt.content as dbt_content, dbt.date_modified as dbt_date_modified 
        FROM `projects` p LEFT JOIN `doc_to_do` dtd ON p.id=dtd.projects_id 
        LEFT JOIN `doc_bug_tracker` dbt ON p.id=dbt.projects_id 
        where p.id="'.$project_id.'"');

date_modifiedそれでは、テーブルから、doc_to_doまたはのいずれかで注文する方法はdoc_bug_tracker

4

2 に答える 2

1

最新の日付のみを取得するには (すべての日付ではなく、降順)、次のようにします。

SELECT
  p.id,
  MAX(GREATEST(dtd.date_modified, dbt.date_modified)) AS MaxDate
FROM projects p
LEFT JOIN doc_to_do dtd ON p.id = dtd.projects_id
LEFT JOIN doc_bug_tracker dbt ON p.id = dbt.projects_id
WHERE p.id = <project_id>
GROUP BY p.id

に追加の列が必要な場合はSELECT、必ずそれらを に含めてくださいGROUP BY

于 2013-06-19T13:31:07.913 に答える
0

これはうまくいくはずです:

'SELECT x.* FROM 
(
    SELECT p.*, 
        dtd.projects_id as dtd_projects_id, dtd.content as dtd_content, dtd.date_modified as dtd_date_modified,
        dbt.projects_id as dbt_projects_id, dbt.content as dbt_content, dbt.date_modified as dbt_date_modified 
        FROM `projects` p LEFT JOIN `doc_to_do` dtd ON p.id=dtd.projects_id 
        LEFT JOIN `doc_bug_tracker` dbt ON p.id=dbt.projects_id 
        where p.id="'.$project_id.'"
) x
ORDER BY x.date_modified ASC'
于 2013-06-19T13:28:27.267 に答える