mysql - SQL-如何从另一个表中选择包含多个值的行

标签 mysql sql select join

这些是表格

表四

create table FOURN(NF CHAR(2),NomF VARCHAR(10),Code int(2),VilleF VARCHAR(10));  

表 REVEND

create table REVEND(NR CHAR(2),NomR CHAR(10),VilleR  CHAR(10) );

表 VOITURE

create table VOITURE(NV CHAR(2),NomV    CHAR(15),Couleur CHAR(10),Prix int(4));

表 FVR

create table FVR(NFCHAR(2),NV CHAR(2),NR CHAR(2),Qle  int(3)));

我想检索提供给所有伦敦供应商的汽车数量(NV)。 这是表格的内容
http://i.imgur.com/ZwsloAr.png
这是我写的查询

select distinct NV
from FVR, REVEND  
where REVEND.NR = FVR.NR AND REVEND.VilleR="LONDRES";  

这会返回 V3、V5、V6,但它应该只返回 V3 和 V5
因为这些是唯一交付给所有伦敦供应商的汽车
http://sqlfiddle.com/#!2/4d4e4a/2

解决方案
从 fvr 中选择 NV,其中 NR (从 revend 中选择 NR,其中 villeR='Londres') 按 NV 进行分组,其中 count(distinct NR) = (从 revend 中选择 count(NR),其中 villeR='Londres');

最佳答案

我不清楚 fournisseurs 表在这里应该用来做什么。如果该表基本上不相关,那么以下应该有效。

这会将 fvr 表连接到 vendeurs 表,然后采用不同的车辆...不幸的是,我无法想出更动态的方式...但如果你有少量的 londres vendeurs,它应该是可行的。也许有人可以改进答案。

Select distinct NV FROM
  FVR LEFT OUTER JOIN REVEND ON FVR.NR = REVEND.NR
  WHERE FVR.NV IN (SELECT NV FROM FVR LEFT OUTER JOIN REVEND ON FVR.NR = REVEND.NR WHERE REVEND.NR = 'R5') 
  AND FVR.NV IN (SELECT NV FROM FVR LEFT OUTER JOIN REVEND ON FVR.NR = REVEND.NR WHERE REVEND.NR = 'R7')

如果您要查找出售给 R5 和 R7 的汽车数量总和,而不计算仅出售给两个零售商之一的汽车数量,则应该是

Select SUM(Qte) FROM
  FVR LEFT OUTER JOIN REVEND ON FVR.NR = REVEND.NR
  WHERE FVR.NV IN (SELECT NV FROM FVR LEFT OUTER JOIN REVEND ON FVR.NR = REVEND.NR WHERE REVEND.NR = 'R5') 
  AND FVR.NV IN (SELECT NV FROM FVR LEFT OUTER JOIN REVEND ON FVR.NR = REVEND.NR WHERE REVEND.NR = 'R7')

编辑:

我创建了一个 sqlfiddle 来演示此过程的自动化,而不必为每个新供应商手动更新它。我已经放置了存储函数和存储过程(该函数仅返回sql字符串)

http://sqlfiddle.com/#!2/c89e31/1

关于mysql - SQL-如何从另一个表中选择包含多个值的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28519079/

相关文章:

用于回退场景的 MySQL 复制

mysql - 在VB中使用mySQL查询结果作为变量

php - 使用PHPMyAdmin导入MySQL数据库时出现权限错误如何解决?

MySQL - 如果前缀为空,则将表设置为默认值

php - 传递主键 "id"URL 参数 : PHP - MYSQLI 中的所有值

php - 如何根据另一个表中的内容使用sql语句选择某些行

mysql - 通过 LEAD/LAG 或递归 CTE 更新?

css - Bootstrap 和 Bootstrap-Select - 使 Select 和其他元素适合 div 宽度,100% 宽度/高度

mysql - 如何将 WHERE 子句的多个值作为单个参数传递

mysql - 如何在不使用迁移的情况下创建数据库表 Laravel