Mysql 查询多对多给我零结果

Mysql 查询多对多给我零结果,mysql,Mysql,我在这张桌子上工作 tbl公司 |idcompany | name | | 1 | apple | | 2 | ms | | 3 | pepsi | tbl供应商 | idbrand | vName | | 1 | comp soft | | 2 | food | | 3 |Electronics| tbl卖方公司 | idbrand | idcompan

我在这张桌子上工作

tbl公司

|idcompany |   name   |
|   1      |   apple  |
|   2      |    ms    |
|   3      |   pepsi  |
tbl供应商

| idbrand  |   vName   |
|    1     | comp soft |
|    2     |   food    |
|    3     |Electronics|
tbl卖方公司

| idbrand  | idcompany |
|    1     |      1    |
|    2     |      3    |
|    1     |      2    |
|    3     |      2    |
我需要知道哪些公司属于电子和计算机软件

在这种情况下,这将是

1-ms

此查询不返回任何结果

SELECT * FROM company c
JOIN vendorXcompany vc ON c.idcompany = vc.idcompany
JOIN vendor v ON vc.idbrand = v.idbrand
WHERE vc.idbrand = 1 and vc.idbrand = 3

我做错了什么?

您的
其中
条件排除了所有行,因为
vc.idbrand=1
vc.idbrand=3
不能同时为真。您需要做的是通过计算符合任一条件的行来查找与这两个条件都匹配的公司:

SELECT c.idcompany, c.name
FROM company c
JOIN vendorXcompany vc ON c.idcompany = vc.idcompany
JOIN vendor v ON vc.idbrand = v.idbrand
WHERE vc.idbrand = 1 OR vc.idbrand = 3
GROUP BY c.idcompany
HAVING COUNT(*) = 2
输出:

idcompany   name
2           ms

太好了。非常感谢你@Hugojastzebski不用担心!如果回答了你的问题,请考虑标记答案(在上/下投票箭头下的复选标记)。看见