この質問に対する答えをかなり探しましたが、これを行う方法を正確にはまだ見つけていません。
データベース内の関連する 3 つのテーブルは、ツール、目的、および user_tools です。ツールと目的の両方に id 列と説明列があり、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