如何查询多个表中的“多个”?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何查询多个表中的“多个”?相关的知识,希望对你有一定的参考价值。
我有三个表与多对多的关系
CREATE TABLE plate(
pid integer NOT NULL,
pname text
);
CREATE TABLE vegetables(
vid integer NOT NULL,
vname text
);
CREATE TABLE meat(
mid integer NOT NULL,
mname text
);
这三个表的多对多关系:
+------+-----+
| pid | vid |
+------+-----+
| 1 | 13 |
| 1 | 12 |
| 2 | 12 |
+------------+
和:
+-------+---+
| pid |mid|
+-------+---+
| 1 | 2 |
| 1 | 3 |
| 2 | 3 |
+-------+---+
我需要的**query**
检查:
当用户输入盘子的成分时,
例:
vid"13","12"
和
mid"2","3"
然后通过检查多对多关系表,查询将检查成分是否可以形成一个盘子。我尝试使用IN语句,但没有找到任何结果
任何帮助?
答案
我相信你需要找到含有所有肉类的盘子,然后才能找到含有所有蔬菜的盘子。一旦你有了这些只是处理一个JOIN
来获得一个相交。
select pid
from
(
-- plates having all the meats
select pid
from platemeat pm
where pm.mid in (12,13)
group by pid
having count(distinct mid) = 2
) t1
join
(
-- plates having all the vegetables
select pid
from plateveget pv
where pv.vid in (2,3)
group by pid
having count(distinct vid) = 2
) t2 on t1.pid = t2.pid
以上是关于如何查询多个表中的“多个”?的主要内容,如果未能解决你的问题,请参考以下文章