高级搜索功能-sql

c3frrgcw  于 2021-06-17  发布在  Mysql
关注(0)|答案(1)|浏览(423)

我正在我的网站上开发一个高级搜索功能。基本上,我正在处理的数据存储在两个表中。
第一个表包含有关产品的基本信息(1行=1个产品,因此它是唯一的)。表结构可能如下所示:

id, title, description

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

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

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

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

如前所述-表2可能包含但不必包含任何通过item\u id与表1连接的行。
我曾尝试在sql中使用join/left join函数,但在本例中,当产品在表2中有3行时,查询结果将返回3行,而不是1或0(如果未找到任何结果)。
我怎么处理?

lnlaulya

lnlaulya1#

您要选择产品。所以从产品表中选择。您只想选择那些存在特定属性的属性。所以创造一个合适的 WHERE 条款。当您想在另一个表中查找数据时,可以使用 EXISTS 或者 IN .

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

相关问题