会社 A の一連の目標と総労働時間を取得するために正しく機能するクエリがあります。会社 B に対してまったく同じクエリを実行し、たまたま週ごとにグループ化された共通の日付にそれらを結合したいと考えています。私の現在のクエリ:
SELECT * FROM (
SELECT org, date,
( SELECT SUM( target ) FROM target WHERE org = "companyA" ) AS companyA_target,
SUM( hours ) AS companyA_actual
FROM time_management_system
WHERE org = "companyA"
GROUP BY WEEK( date )
ORDER BY DATE
) q1
LEFT JOIN (
SELECT org, date,
( SELECT SUM( target ) FROM target WHERE org = "companyB" ) AS companyB_target,
SUM( hours ) AS companyB_actual
FROM time_management_system
WHERE org = "companyB"
GROUP BY WEEK( date )
ORDER BY DATE
) q2
ON q1.date = q2.date
結果には、companyA のすべての日付/情報が表示されますが、companyB は散発的なデータのみを示しています。別々に、2 つのクエリはまったく同じ一連の日付を表示しますが、'target' 列と 'actual' 列の情報が異なります。
companyA 2012-01-28 105.00 39.00 NULL NULL NULL NULL
companyA 2012-02-05 105.00 15.00 NULL NULL NULL NULL
companyA 2012-02-13 105.00 60.50 companyB 2012-02-13 97.50 117.50
companyB のすべての情報が得られない理由は何ですか?
補足として、各行の週の値を列に変換する方向を指摘できる人はいますか? companyA と companyB が 2 つの行だけですか?
私はすべての助けに感謝します! ありがとう。