问题描述
第一个左联接有2个表(project_reviews和project_review_remarks)
SELECT pr.review_id,client_name,improvement_areas,strengths
FROM project_reviews pr
LEFT JOIN project_review_remarks pra ON pr.review_id = pra.review_id
WHERE review_status IN ('COMPLETED')
ORDER BY review_date DESC;
具有2个表(project_reviews和project_review_remarks)的第二个左JOIN
SELECT pr.review_id,COUNT(pra.action_item_id) AS actions
FROM project_reviews pr
LEFT JOIN project_review_action_item pra ON pr.review_id = pra.review_id
GROUP BY pr.review_id;
我想将两个查询合并到一个查询中,因为project_reviews是具有评论ID的公用表,并将action_item的计数显示在一个表中。
解决方法
只需将这些代码添加到第一个查询中即可。
- 在选择中添加
COUNT(pra.action_item_id) AS actions
。 - 添加
LEFT JOIN project_review_action_item pra ON pr.review_id = pra.review_id
。在我更新LEFT JOIN tables
alias
时,请确保您的两个project_review_remarks
具有不同的prr
。 - 添加
GROUP BY
和columns
中的所有SELECT
,例如GROUP BY pr.review_id,client_name,improvement_areas,strengths
。 - 对于具有
GROUP BY
列的TEXT
,您可以将其强制转换为VARCHAR(MAX)
或NVARCHAR(MAX)
。
在下面检查完整的查询。
SELECT pr.review_id,CAST(improvement_areas AS VARCHAR(MAX)) AS improvement_areas,CAST(strengths AS VARCHAR(MAX)) AS strengths,COUNT(pra.action_item_id) AS actions
FROM project_reviews pr
LEFT JOIN project_review_remarks prr
ON pr.review_id = prr.review_id
LEFT JOIN project_review_action_item pra
ON pr.review_id = pra.review_id
WHERE pr.review_status IN ('COMPLETED')
GROUP BY pr.review_id,CAST(improvement_areas AS VARCHAR(MAX)),CAST(strengths AS VARCHAR(MAX))
ORDER BY review_date DESC;