全て順調に行きますように!
同じタイプのデータがそれぞれ1つだけで、同じ名前で2つの異なるテーブルにある2つの列から最小値と最大値を取得するために、SQLクエリを作成する必要がある状況にあります。現在、テーブルの1つからこれを取得できるクエリがありますが、2つのテーブル間のMIN日時値と2つのテーブル間のMAX日時値を取得する方法に頭を悩ませることはできません。
1つのテーブルからMAXとMINを取得するために、私は次のようにします。
SELECT idprojects, projectname, MIN(startDate), MAX(endDate)
FROM projects,
tasks
WHERE idprojects = projectid
GROUP BY projectid
基本的に、テーブルはタスクとサブプロジェクトタスクのテーブルであり、最も早い日時タスク/ sptaskと最も遅い日時タスク/ sptaskの最初の日付を表示することによってプロジェクト全体の期間を表示したくありません。私のテーブルは次のようになります。
したがって、私が取得したい結果は、1行のprだけです。projectid:
| projectName | idprojects | MIN(startDate) | MAX(endDate) |
ここで、MIN(startDate)とMAX(startDate)は、sptasksテーブルとtasksテーブルの両方の間のすべての最小および最大日時値です。
私が試している間どこにも来ていないので、誰かがここで私を助けてくれることを本当に望んでいます。
良いものを持って、安全に!
あなたは使用することができleft join
、タスクやsptaskは、各プロジェクトのために利用可能である必要はないとして。また、あなたが使用することができますgreatest
し、least
次のように:
SELECT p.idprojects, p.projectname,
MIN(least(coalesce(t.startDate,s.startdate),
coalesce(s.startDate,t.startdate))) as startdate,
MAX(greatest(coalesce(t.endDate,s.enddate),
coalesce(s.endDate,t.enddate))) as enddate
FROM projects p
left join tasks t on p.idprojects = t.projectid
left join sptasks s on p.idprojects = s.projectid
GROUP BY p.idprojects, p.projectname
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加