簡體   English   中英

不是唯一的表格/別名:“類別”。

[英]Not unique table/alias: 'categories'.

我有這個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

我收到此錯誤:

不是唯一的表格/別名:“類別”

完成此操作所需要做的就是對您的categories表進行內部聯接(您提供正確的表名和列名):

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. 如果可行,則更優化,加入

    SELECT s.interest_desc, c.name, MAX(s.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 ) s INNER JOIN categories c ON c.ID = s.categoryID GROUP BY s.interest_desc, s.categoryID

    要么

  2. 不太理想,將另一個選擇添加為列

    SELECT s.interest_desc, (SELECT name from categories c WHERE c.ID = s.categoryID), MAX(s.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 ) s GROUP BY s.interest_desc, s.categoryID

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM