高级搜索功能-SQL

时间:2018-12-14 09:55:05

标签: mysql sql

我正在网站上使用高级搜索功能。 基本上,我正在处理的数据存储在两个表中。

第一个表包含有关产品的基本信息(1行= 1个产品,因此它是唯一的)。 表结构可能如下所示:

id, title, description

第二个表包含有关产品的更多信息。该产品可能但不必在这里有任何行。但是,一种产品可以在第二个表中存储几行。而且,第二张表中的数据应用于高级搜索功能。表结构可能如下所示:

id, item_id (from table 1), value_id (from another table), value

我只想选择具有指定value_id的这些产品(表1)(来自第2列):

... WHERE table1.item_id = 5 AND table2.value_id = 1000

正如我之前提到的,表2可以但不必包含由item_id与表1连接的任何行。

我试图在SQL中使用JOIN / LEFT JOIN函数,但是在这种情况下,当产品在表2中有3行时-查询结果将返回3行而不是1或0(如果未找到任何结果)。

我该如何处理?

1 个答案:

答案 0 :(得分:2)

您要选择产品。因此,请从产品表中选择。您只想选择那些存在特定属性的属性。因此,创建一个适当的WHERE子句。当您想在另一个表中查找数据时,可以使用EXISTSIN

select *
from items
where id in (select item_id from item_values where value_id = 1000);