首页 > 解决方案 > 从一个表中获取行,它的 id 在另一个表中具有条件(不知道如何命名)

问题描述

恐怕我在标题中问错了我的问题...

我在数据库中有两个表,与这个问题有关

产品

类别

我需要创建两个查询。

一种获取具有product_category = 1AND product_category = 2AND product_category = 3[...] 的产品 ID。

第二个是获得products idOR product_category = 1OR product_category = 2[ product_category = 3...]

我已经尝试了所有我学到的东西,但没有任何效果我应该使用什么样的查询?

编辑:

这是一些示例行和预期结果

产品

ID | Name 
------------
1  | Prod_3
------------
2  | Prod_4
------------
3  | Prod_5
------------
4  | Prod_6

类别

ID | ProductID | CategoryID
----------------------------
1  |     1     |     101
----------------------------
2  |     1     |     102
----------------------------
3  |     1     |     103
----------------------------
4  |     2     |     102
----------------------------
5  |     2     |     103
----------------------------
6  |     2     |     108
----------------------------
7  |     3     |     121
----------------------------
8  |     3     |     111

我想NameProducts表中选择。该产品应在Categories表中,并具有特定的CategoryID

示例 1:

Select `ID`, `Name` From `Products`

WHERE IN `Categories`.`ProductID` = `Products`.`ID`

AND (`Categories`.`CategoryID` = 103 AND `Categories`.`CategoryID` = 102)

这应该导致:

ID | Name 
------------
1  | Prod_3
------------
2  | Prod_4

示例 2:

Select `ID`, `Name` From `Products`

WHERE IN `Categories`.`ProductID` = `Products`.`ID`

AND (`Categories`.`CategoryID` = 108 OR `Categories`.`CategoryID` = 121)

这应该导致:

ID | Name 
------------
2  | Prod_4
------------
3  | Prod_5

标签: mysqlsql

解决方案


我最终得到:

SELECT a.product_id FROM `product_categories` a

INNER JOIN (SELECT * FROM product_categories WHERE category_id = 1655) a1 ON 
a1.product_id = a.product_id
INNER JOIN (SELECT * FROM product_categories WHERE category_id = 1605) a2 ON

[...]

a2.product_id = a.product_id

WHERE a.category_id = 1575

推荐阅读