そのテーブルのすべての行に値が見つからない場合でも、 client.client_name のすべての値が結果に出力されるように要求することで、強化したい MySQL クエリがあります。現在の表は次のとおりです。
client.client_name
Client A
Client B
Client C
現在の MySQL クエリは次のとおりです。
SELECT X.expr1 AS 'Project Name', SUM(X.expr2) AS 'Total Hours Logged', X.expr3 - sum(X.expr2) AS 'Monthly Hours Remaining', X.expr4 AS 'Last Day', DATEDIFF(X.expr4 , curdate()) AS 'Days Remaining'
FROM
(SELECT
client.client_name AS expr1
, sum(time_records.value) AS expr2
, client.monthly_hours AS expr3
FROM project_objects
INNER JOIN projects
ON projects.id = project_objects.project_id
INNER JOIN time_records
ON time_records.parent_id = project_objects.id
LEFT JOIN client
ON project_objects.project_id = client.project_id
WHERE time_records.parent_type = 'Task'
AND client.start_day_of_month < dayofmonth(curdate())
AND time_records.state = 3
GROUP BY client.client_name
UNION
SELECT
client.client_name AS expr1
, sum(time_records.value) as expr2
, client.monthly_hours AS expr3
FROM projects
INNER JOIN time_records
ON projects.id = time_records.parent_id
LEFT JOIN client
ON projects.id = client.project_id
WHERE time_records.parent_type = 'Project'
AND client.start_day_of_month < dayofmonth(curdate())
AND time_records.state = 3
GROUP BY client.client_name
) X
GROUP BY X.expr1
ORDER BY DATEDIFF(X.expr4 , curdate()
上記のクエリからわかるように、クライアント テーブルに左結合を追加しましたが、すべてのクライアント レコードが出力されるわけではなく、time_records が利用可能なレコードのみが出力されます。これは、ネスティングまたは結合の記述方法に関連していると思いますが、理解できないようです。何かアイデアがあれば、大歓迎です。ありがとう!