現在、すべてのユーザーと、そのユーザーが特定のファイルをダウンロードしたかどうかを示す HTML テーブルを作成しようとしています。
テーブル
ユーザー向けの 1 つ:
CREATE TABLE IF NOT EXISTS `users` (
`user_id` int(8) NOT NULL AUTO_INCREMENT,
`user_name` varchar(128) NOT NULL,
PRIMARY KEY (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
ファイル用の 1 つ:
CREATE TABLE IF NOT EXISTS `files` (
`file_id` int(8) NOT NULL AUTO_INCREMENT,
`file_name` varchar(128) NOT NULL,
PRIMARY KEY (`file_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
また、どのユーザーがどのファイルをダウンロードしたかを保存するためのリンク テーブル:
CREATE TABLE IF NOT EXISTS `downloads` (
`download_id` int(8) NOT NULL AUTO_INCREMENT,
`user_id` int(8) NOT NULL,
`file_id` int(8) NOT NULL,
PRIMARY KEY (`download_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
クエリ
file_id 3 を選択すると、すべてのユーザーと、ファイルがダウンロードされているかどうかが表示されます。
SELECT `file_id`, `user_name`, IF(`file_id` = '3', 1, 0) as `downloaded`
FROM `users`
NATURAL RIGHT JOIN `downloads`
WHERE `file_id` = '3'
GROUP BY `user_name`
結果
出力は次のようになります。
+----------+---------------+-------------+
| file_id | user_name | downloaded |
+----------+---------------+-------------+
| 3 | John | 1 |
| 3 | Peter | 1 |
| 3 | Jack | 0 |
| 3 | Michael | 0 |
+----------+---------------+-------------+
誰でも私を助けることができますか?または、私を正しい方向に向けますか?