mysql - 从一个表中获取行,它的 id 在另一个表中具有条件(不知道如何命名)
问题描述
恐怕我在标题中问错了我的问题...
我在数据库中有两个表,与这个问题有关
产品
- product_id
- 姓名
- 等等
类别
- ID
- product_id
- 类别ID
我需要创建两个查询。
一种获取具有product_category = 1
AND product_category = 2
AND product_category = 3
[...] 的产品 ID。
第二个是获得products id
OR product_category = 1
OR 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
我想Name
从Products
表中选择。该产品应在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
解决方案
我最终得到:
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
推荐阅读
- postman - 热于在 Postman 中上传带有文件的对象列表
- node.js - 避免 Mongoose 中的重复(分组)条目
- php - 新鲜的 Laravel 安装 HTTP 错误 500
- laravel - 我在数据库中有日期和时间两列。时间采用 h:i:A 格式。我想要当前日期时间之前的数据
- c - 我正在制作一个迷你防病毒软件,用于检查文件夹的文件中是否包含特定文本
- powershell - PowerShell // 获取 GPO 链接是否启用的状态
- docker - 使用注册表 rabbitmq:3.5.3-management 中的 docker 映像时容器未启动
- database - 如何在 mongoDB 的集合中创建集合?
- php - 如何判断 curl 在客户端或服务器上是否超时?
- python - 用 python 代码连接 Schneider-Aut.OFS.2