我有这三个表,user
,categories
和files
在users
,表格中有一列user_id
我有这个显示所有类别的查询。
SELECT
`categories`.`category_id`, `categories`.`timestamp`,`categories`.`name`,
LEFT(`categories`.`description`, 50) as `description`,
COUNT(`files`.`file_id`) as `file_count`
FROM `categories`
LEFT JOIN `files`
ON `categories`.`category_id` = `files`.`category_id`
GROUP BY `categories`.`category_id`
我想要做的是仅显示由特定用户创建的类别。
添加WHERE user.user_id = categories.category_id
会给出
未知列users.user_id
答案 0 :(得分:0)
问题是你没有在任何地方加入users
表(同样,你的WHERE语句中有一个拼写错误:user.user_id
,应该是users.user_id
)。
所以,我想你想添加类似的东西(在你的FROM语句中):
categories INNER JOIN users ON categories.user_id = users.user_id
根据您喜欢的user_id
过滤(使用where语句)。
干杯!
答案 1 :(得分:0)
由于您没有从用户表中获取任何额外信息,因此无需在此处加入用户表。下面的查询应该会给你想要的结果。
SELECT
`categories`.`category_id`, `categories`.`timestamp`,`categories`.`name`,
LEFT(`categories`.`description`, 50) as `description`,
COUNT(`files`.`file_id`) as `file_count`
FROM `categories`
LEFT JOIN `files`
ON `categories`.`category_id` = `files`.`category_id`
where `categories`.`user_id` = 2
GROUP BY `categories`.`category_id`;
答案 2 :(得分:0)
如果您需要在users表中包含一些信息,您肯定也应该加入users表。或者,如果您想要计算特定用户创建的所有类别。否则,没有目的可以WHERE user.user_id = categories.category_id
。
如果不是categories.category_id
过滤的情况。