Php 非唯一表/别名:“类别”。

Php 非唯一表/别名:“类别”。,php,mysql,sql,Php,Mysql,Sql,我有一段mysql代码,它根据每个类别中最流行的描述在数据库中出现的次数来检索这些描述- 这是一个列表,但是它像这样呼出了数据 "Adidas was the most popular in category 5 with 1 occurrences" 我的这个兴趣爱好表结构是 # interests CREATE TABLE `interests` ( `interestID` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(100)

我有一段mysql代码,它根据每个类别中最流行的描述在数据库中出现的次数来检索这些描述-

这是一个列表,但是它像这样呼出了数据

"Adidas was the most popular in category 5 with 1 occurrences"
我的这个兴趣爱好表结构是

 # interests
 CREATE TABLE `interests` (
 `interestID` int(11) NOT NULL AUTO_INCREMENT,
 `name` varchar(100) NOT NULL,
 `categoryID` int(11) NOT NULL,
 `sessionID` int(11) NOT NULL,
 `interest_desc` varchar(30) NOT NULL,
 `timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
 PRIMARY KEY (`interestID`)
) ENGINE=MyISAM AUTO_INCREMENT=9 DEFAULT CHARSET=utf8   


# categories
CREATE TABLE `categories` (
 `categoryID` int(11) NOT NULL AUTO_INCREMENT,
 `category_desc` varchar(100) NOT NULL,
 PRIMARY KEY (`categoryID`)
) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8
这是我的SQL命令:

SELECT 
   interest_desc, 
   categoryID, 
   MAX(num_in_cat) AS num_in_cat,
   category_name
FROM
(
   SELECT interest_desc, categoryID, COUNT(categoryID) AS num_in_cat
   FROM interests
   GROUP BY interest_desc, categoryID
) subsel
JOIN categories ON subsel.categoryID = categories.ID 
GROUP BY interest_desc, categoryID, category_name
我收到这个错误:

非唯一表/别名:“类别”

试试这些:

如果有效,则更为优化,加入

选择s.interest\u desc、c.name、MAXs.num\u作为\u cat中的num\u 从…起 选择兴趣描述、类别ID、COUNTcategoryID作为类别中的数字 出于兴趣 按利益分组\u desc,类别ID s c.ID=s.categoryID上的内部联接类别c 按s.interest\u desc,s.categoryID分组

将另一个select添加为列不太理想

选择s.interest\u desc,从类别c中选择名称,其中c.ID=s.categoryID,MAXs.num\u在\u cat中作为num\u在\u cat中 从…起 选择兴趣描述、类别ID、COUNTcategoryID作为类别中的数字 出于兴趣 按利益分组\u desc,类别ID s 按s.interest\u desc,s.categoryID分组

试试这些:

如果有效,则更为优化,加入

选择s.interest\u desc、c.name、MAXs.num\u作为\u cat中的num\u 从…起 选择兴趣描述、类别ID、COUNTcategoryID作为类别中的数字 出于兴趣 按利益分组\u desc,类别ID s c.ID=s.categoryID上的内部联接类别c 按s.interest\u desc,s.categoryID分组

将另一个select添加为列不太理想

选择s.interest\u desc,从类别c中选择名称,其中c.ID=s.categoryID,MAXs.num\u在\u cat中作为num\u在\u cat中 从…起 选择兴趣描述、类别ID、COUNTcategoryID作为类别中的数字 出于兴趣 按利益分组\u desc,类别ID s 按s.interest\u desc,s.categoryID分组


针对您的类别表的内部联接您只需提供正确的表名和列名即可完成此操作:

SELECT 
  interest_desc, 
  categoryID, 
  MAX(num_in_cat) AS num_in_cat,
  category_name
FROM
(
   SELECT interest_desc, categoryID, COUNT(categoryID) AS num_in_cat
   FROM interests
   GROUP BY interest_desc, categoryID
) subsel
JOIN categories ON subsel.categoryID = categories.ID 
GROUP BY interest_desc, categoryID, category_name

针对您的类别表的内部联接您只需提供正确的表名和列名即可完成此操作:

SELECT 
  interest_desc, 
  categoryID, 
  MAX(num_in_cat) AS num_in_cat,
  category_name
FROM
(
   SELECT interest_desc, categoryID, COUNT(categoryID) AS num_in_cat
   FROM interests
   GROUP BY interest_desc, categoryID
) subsel
JOIN categories ON subsel.categoryID = categories.ID 
GROUP BY interest_desc, categoryID, category_name

1.你应该展示你的表格结构;2.这个问题应该只关注SQL查询,而不是PHP,因为PHP部分没有问题。我知道我的表结构,我有两个表,一个表的次键是categoryID,另一个表的主键是categoryID。我将如何编辑sql查询以涉及第二个表,因为我的sql查询只关注第一个表,该表只有categoryID1。你应该展示你的表格结构;2.这个问题应该只关注SQL查询,而不是PHP,因为PHP部分没有问题。我知道我的表结构,我有两个表,一个表的次键是categoryID,另一个表的主键是categoryID。我如何编辑sql查询以包含第二个表,因为我的sql查询只关注第一个表,该表只有CategoryAdjust试图让您的答案正常工作,所以我得到了这个mysql错误-不是唯一的表/别名:“categories”。我已经通过sql中的designer链接了这些表。有什么问题?@DIM3NSION您的表的实际名称是什么?如果不是类别,请在上面提供正确的名称。另外,我刚刚发现ON子句中有一个错误的逗号-subsel,categoryID应该是subsel.categoryID。我的表被称为categories,尽管:S我用你的更新编辑过。只是为了让你的答案有效,我得到了这个mysql错误-不是唯一的表/别名:“categories”。我已经通过sql中的designer链接了这些表。有什么问题?@DIM3NSION您的表的实际名称是什么?如果不是类别,请在上面提供正确的名称。另外,我刚刚发现ON子句中有一个错误的逗号-subsel,categoryID应该是subsel.categoryID。我的表名为categories:S,但我已经用您的更新编辑过了。