我已经搜索了很多这个问题的答案,但我还没有找到确切的方法。
我的数据库中的三个相关表是工具、用途和 user_tools。Tool 和 purpose 都有 id 和 description 列,而 user_tools 有 user_id、tool_id 和 purpose_id 列。工具和用途本质上是静态查找表,并且 user_tools 对于给定用户使用工具的每个用途都有一行。
我需要构建一个 SELECT 语句,其列是用途表中列出的每个不同用途的工具描述和使用计数。例如。结果行:
description | Purpose: Class | Purpose: Student Club | Purpose: Personal Project | ...
'Lathe' | 100 | 50 | 11 | ...
我想这样做,而不必将 purpose_id 硬编码到 SELECT 中,这样如果我想向目的表添加新条目,我就不需要更改我的代码。
以下语句获取我想要的信息,但它为每个不同的目的计数创建一个新行,我希望将它们全部放在列中。
SELECT
tool.description,
count(purpose.id),
purpose.description
FROM
user_tools LEFT OUTER JOIN tool
ON
user_tools.tool_id = tool.id LEFT OUTER JOIN purpose
ON
user_tools.purpose_id = purpose.id
GROUP BY
tool.description,
purpose.description