我对普通的旧SQL查询有一些问题(大多数时候使用ORM的缺点:)).
我有两张桌子,PRODUCTS而且RULES.在表格中,RULES我已经定义了产品规则.我想要的是编写一个查询来获取所有已定义规则的产品.
规则由两种方式定义:
RULE一个产品(ProductID有值,SectorID为NULL)RULE更多的产品SectorID(ProductID为NULL)结果需要包含所有具有rule(product.ID - rule.ProductID)的产品,以及所有在rules(product.SectorID - rule.SectorID)中的扇区中定义的产品.
此外,结果不能有重复的产品(由productIdin RULES或by 定义的产品SectorID)
例:
产品
ID SectorID
1 1
2 1
3 1
4 2
5 3
6 3
Run Code Online (Sandbox Code Playgroud)
规则
ID ProductID SectorID
1 1 NULL
4 NULL 1
5 6 NULL
Run Code Online (Sandbox Code Playgroud)
预期结果
PRODUCTS with IDs : 1, 2, 3, 6
Run Code Online (Sandbox Code Playgroud)
我能想到的最简单的方法,但不一定是最快的。
SELECT * FROM products AS p WHERE
EXISTS (SELECT * FROM rules AS r WHERE p.ID = r.ProductID OR p.SectorID = r.SectorID)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
648 次 |
| 最近记录: |