DIM*_*ION 6 mysql join group-by
我有这个查询 -
SELECT interest_desc, categoryID, MAX(num_in_cat) AS num_in_cat
FROM
(
SELECT interest_desc, categoryID, COUNT(categoryID) AS num_in_cat
FROM interests
GROUP BY interest_desc, categoryID
) subsel
GROUP BY interest_desc, categoryID
Run Code Online (Sandbox Code Playgroud)
我想更改它,以便最终可以从一个名为的单独表中显示类别名称categories.我能显示的是categoryID从interests这个SQL
两个表结构都是
#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
Run Code Online (Sandbox Code Playgroud)
类别表结构
# 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
Run Code Online (Sandbox Code Playgroud)
我知道需要某种类型的连接,但我已经查看了示例并且正在努力获得确切的语法.
我在php脚本中有这个 - echo语句是这样的
"{$result['interest_desc']} was the most popular in category {$result['categoryID']} with {$result['num_in_cat']} occurrences\n";
Run Code Online (Sandbox Code Playgroud)
它的输出是这个 -
"Adidas was the most popular in category 5 with 1 occurrences"
Run Code Online (Sandbox Code Playgroud)
我希望输出为"阿迪达斯是体育界最受欢迎的一次出现"
但是我的SQL查询没有功能category_desc.
小智 0
SELECT * FROM interests i LEFT JOIN categories c ON i.categoryID = c.categoryID
我还没有测试过。可能存在语法错误。