pgh*_*er4 4 sql database recipe
我有一个数据库,其中包含一个成分表和一个食谱R表.这两个表有多对多的关系,因为一个食谱使用了许多成分,并且在许多食谱中使用了一种成分.我有第三个交叉引用表,它使用交叉引用验证模式来强制执行我的多对多关系,并使用字符串外键(而不是整数)完成.
假设我的数据库之外有一系列成分C,我怎样才能查询配方表R中每个可以使用C中提供的成分列表制作的配方?
其他需要考虑的事情
1)速度(当然)最终会成为一个问题,但正确性是我现在所坚持的.
2)成分C的收集可能非常大(约100种成分).
任何答案,甚至只是正确方向的指针将不胜感激.
谢谢,
亚历克
一种方法是写:
select ...
from R
where ID not in
( select R_ID
from RI
where I_ID not in
( select I_ID
from C
)
)
;
Run Code Online (Sandbox Code Playgroud)
那就是:开始C.选择所有的配方配料交叉引用其中的成分是不是在C.这为您提供了仅使用成分无法制作的所有配方的集合C.然后,选择不在该集合中的所有配方.
| 归档时间: |
|
| 查看次数: |
1669 次 |
| 最近记录: |