mysqlクエリを作成し、以下で作成したようなテーブルにデータを出力する方法を理解するのに苦労しています。
運が悪かったので、数日間遊んでいたので、助けていただければ幸いです。
以下の画像は、私の3つのデータベーステーブル(単純な形式)と、PHP/MYSQLを使用して出力しようとしているものを示しています。
この画像には、各カテゴリの各ユーザーのリストの合計数(数)も示されています。どのようにすべてを結合するかがわかりません。
これが理にかなっていることを願っています!
最初は、このように行うことができます、
SELECT a.user_name,
SUM(CASE WHEN c.cat_name = 'books' THEN 1 ELSE 0 END) books,
SUM(CASE WHEN c.cat_name = 'videos' THEN 1 ELSE 0 END) videos
FROM users a
LEFT JOIN downlods b
ON a.user_ID = b.user_ID
LEFT JOIN download_cats c
ON b.cat_id = c.cat_id
GROUP BY a.user_name
しかし、私はあなたがあなたのテーブルに未知の数を持っていると思います。動的SQLcat_name
の方がはるかに適しています。
SET @sql = NULL;
SELECT
GROUP_CONCAT(DISTINCT
CONCAT(
'SUM(CASE WHEN c.cat_name = ''',
cat_name,
''' THEN 1 ELSE 0 END) AS ',
cat_name
)
) INTO @sql
FROM download_cats;
SET @sql = CONCAT(' SELECT a.user_name, ', @sql, '
FROM users a
LEFT JOIN downlods b
ON a.user_ID = b.user_ID
LEFT JOIN download_cats c
ON b.cat_id = c.cat_id
GROUP BY a.user_name');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;