Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 将函数与';在';寻找两个值_Mysql - Fatal编程技术网

Mysql 将函数与';在';寻找两个值

Mysql 将函数与';在';寻找两个值,mysql,Mysql,我有当前的sql语句: SELECT count(distinct s.SupplierID) from Products p join Categories c on p.CategoryID = c.CategoryID join Suppliers s on s.SupplierID = p.SupplierID and c.CategoryName IN ('Beverages', 'Seafood'); 我很难让它只显示饮料和海鲜,而不是一个或另一个 您可以使用所有操作员来完成您的

我有当前的sql语句:

SELECT count(distinct s.SupplierID)
from Products p join Categories c on p.CategoryID = c.CategoryID
join Suppliers s on s.SupplierID = p.SupplierID and c.CategoryName 
IN ('Beverages', 'Seafood');

我很难让它只显示饮料和海鲜,而不是一个或另一个

您可以使用所有操作员来完成您的要求

SELECT count(distinct s.SupplierID)
from Products p join Categories c on p.CategoryID = c.CategoryID
join Suppliers s on s.SupplierID = p.SupplierID and c.CategoryName 
=All (select 'Beverages' as column 
 Union all select 'Seafood');
您可以使用和分别给出两个条件

SELECT count(distinct s.SupplierID)
    from Products p join Categories c on p.CategoryID = c.CategoryID
    join Suppliers s on s.SupplierID = p.SupplierID 
Where  c.CategoryName ='Beverages' and  c.CategoryName= 'Seafood'

您是否尝试将该条件放在
WHERE
子句中,而不是作为连接条件的一部分?例如:

SELECT count(distinct s.SupplierID) 
from Products p  
join Categories c on p.CategoryID = c.CategoryID 
join Suppliers s on s.SupplierID = p.SupplierID  
WHERE c.CategoryName IN ('Beverages', 'Seafood');

如果我假设你想要一份与这两个类别相关的供应商名单

SELECT S.SupplierID
FROM Products p 
INNER JOIN join Categories c 
  on p.CategoryID = c.CategoryID
INNER JOIN Suppliers s 
  on s.SupplierID = p.SupplierID 
WHERE c.CategoryName IN ('Beverages', 'Seafood')
GROUP BY SupplierID
HAVING count(Distinct c.categoryID) = 2
问题是,每个类别位于不同的行上。所以我们需要找到那些两排都有的,而不仅仅是两排的饮料或海鲜。因此,我们区分类别Id并将其计算在内,并确保两者都存在,因为where条款将结果限制在饮料或海鲜类别的供应商


另一种方法是每个类别都有一个联接,但由于更多类别名称而变得麻烦。

如果希望所有供应商都提供这两个类别,可以使用以下方法:

SELECT count(distinct s.SupplierID)
from Products p join Categories c on p.CategoryID = c.CategoryID
      join Suppliers s on s.SupplierID = p.SupplierID 
          and c.CategoryName like 'Beverages'
where exists (select * from Products where SupplierID = s.SupplierID and 
      CategoryID = (select CategoryID from Category where name like 'Seafood') )

请给我一些样本数据,为你们提供完美的解决方案。所以你们只想展示同时提供海鲜和饮料的供应商?因为一些奇怪的原因,这是行不通的。还有别的办法吗?现在我已经改变了,现在试试看,那也不行。这些都是我以前尝试过的方法,发生了什么,你得到了什么错误,或者你得到的结果没有满足你的要求,只是显示数据库中没有。但是,我知道有一个twoYah的输出和以前一样