0

我正在尝试使用 LIKE STATEMENT 加入我的表,我当前的查询是这样的:

SELECT
    COUNT(comment_id) AS nb,
    produit.nom
FROM
    comments
INNER JOIN produit ON comments.comment_location like (select '%'+produit.id+'%')
GROUP BY
    comment_location

表格的 SQL 是这样的:

表评论:

CREATE TABLE `comments` (
 `comment_id` int(11) NOT NULL AUTO_INCREMENT,
 `user_id` int(11) NOT NULL,
 `comment_date` datetime NOT NULL,
 `comment_content` varchar(255) NOT NULL,
 `comment_location` varchar(255) NOT NULL,
 PRIMARY KEY (`comment_id`),
 KEY `user_id` (`user_id`),
 CONSTRAINT `comments_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`user_id`)
) ENGINE=InnoDB AUTO_INCREMENT=41 DEFAULT CHARSET=utf8

餐桌产品:

CREATE TABLE `produit` (
 `id` int(11) NOT NULL,
 `nom` varchar(25) NOT NULL,
 `description` varchar(200) NOT NULL,
 `categorie` varchar(25) NOT NULL,
 `image` varchar(200) NOT NULL,
 `prix` float NOT NULL,
 `quantite` int(11) NOT NULL,
 `prix_initiale` float NOT NULL,
 PRIMARY KEY (`id`),
 KEY `FK_CATEGORIE` (`categorie`),
 CONSTRAINT `FK_CATEGORIE` FOREIGN KEY (`categorie`) REFERENCES `categorie` (`nom`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1

我的查询确实执行但没有返回我正在寻找的表,但是如果我尝试用常量替换 produit.id in (select '%'+produit.id+'%') 表会显示相应的行。

我究竟做错了什么

4

2 回答 2

1

您需要修改查询如下。您不需要在 LIKE 子句中再次选择 SELECT。

SELECT
    COUNT(comment_id) AS nb,
    produit.nom
FROM
    comments
INNER JOIN produit ON comments.comment_location like CONCAT('%',produit.id,'%')
GROUP BY
    comment_location
于 2018-05-03T04:31:57.177 回答
0

SELECT COUNT(comment_id) AS nb, produit.nom AS nom FROM comments INNER JOIN produit ON comments.comment_location LIKE CONCAT('%', produit.id, '%')

按评论位置分组

通过@菲尔

于 2018-05-03T04:41:19.387 回答