3

我必须为产品数据库构建一个搜索查询,该数据库包含两个名称相似的产品,其名称类似于以下示例:

“用于...的小部件模拟器和虚拟研讨会”

“用于...的小部件模拟器”

目前,如果有人搜索“Widget Simulator”,他们会在列表中获得两种类型的产品。我正在尝试构建一个类似于“Widget Simulator not:Virtual Seminar”的查询,该查询将省略包含“Virtual Seminar”字样的产品

现有查询如下所示:

SELECT COUNT(*) AS `numrows` 
FROM (`content_product`) 
JOIN `content` ON `content`.`content_id` = `content_product`.`content_id` 
WHERE `content`.`version_status_id` = 28 
AND `content`.`status` = 11
AND `name`  LIKE '%widget%simulator%'

我尝试了以下方法,但它不起作用:

SELECT COUNT(*) AS `numrows` 
FROM (`content_product`) 
JOIN `content` ON `content`.`content_id` = `content_product`.`content_id` 
WHERE `content`.`version_status_id` = 28 
AND `content`.`status` = 11
AND `name`  LIKE '%widget%simulator%'
AND `name` NOT LIKE '%virtual%seminar%'

这行不通。我想我明白为什么它不起作用,但我在这里或其他地方找不到任何告诉我如何做到这一点的东西。

总而言之,我想显示名称中包含“Widget Simulator”的所有产品,同时省略那些也包含“Virtual Seminar”的产品。

感谢您的任何帮助或建议。

4

1 回答 1

0

只有个人认为我认为您应该使用子查询来使用它,首先删除所有包含虚拟研讨会的产品,然后选择其余包含 Widget Simulator 的产品,如下所示:

SELECT COUNT(*) AS `numrows` 
  FROM (`content_product`) 
  JOIN `content` ON `content`.`content_id` = `content_product`.`content_id` 
 WHERE `content`.`version_status_id` = 28 
   AND `content`.`status` = 11
   AND `name`  LIKE '%widget%simulator%'
   AND `content_product.id` NOT IN (
           SELECT `content_product.id` 
             FROM `content_product` 
            WHERE `name` LIKE '%virtual%seminar%'
       )
于 2012-12-04T05:08:17.467 回答