SQL获取具有所有值的实体
我无法计算出这个语法,但它确实有效(english:get MNAME's,它具有所有PID) 谁能告诉我为什么 为了达到相同的结果,有什么替代语法 结果:SamSQL获取具有所有值的实体,sql,Sql,我无法计算出这个语法,但它确实有效(english:get MNAME's,它具有所有PID) 谁能告诉我为什么 为了达到相同的结果,有什么替代语法 结果:Sam 请查阅维基百科的文章“关系代数”,特别是那篇文章中的“除法”。我承认这是一种精神扭曲。就我所知所信,您提出的解决方案(不存在多个)是唯一适用于所有情况的解决方案(一个经典的关系划分问题) 奇怪的是,在另一个论坛上出现了一个与此非常相似的问题,我提出了您展示的解决方案;当我提出这个解决方案时,OP似乎不相信我 Wietze314的解决方
请查阅维基百科的文章“关系代数”,特别是那篇文章中的“除法”。我承认这是一种精神扭曲。就我所知所信,您提出的解决方案(不存在多个)是唯一适用于所有情况的解决方案(一个经典的关系划分问题) 奇怪的是,在另一个论坛上出现了一个与此非常相似的问题,我提出了您展示的解决方案;当我提出这个解决方案时,OP似乎不相信我
Wietze314的解决方案将适用于您的数据集;不一定适用于所有情况。只要Sam在表MP中有六行(并且只有六行),不管P1…P6是否全部被表示,那么该解决方案将起作用。是的,您很难理解。在上面的示例中,我无法单独执行内部查询,也不确定原因。如果我将表名添加到其中,
来自MP,P,M
。整个问题给出了错误的答案@客人
SELECT MNAME
FROM M
WHERE NOT EXISTS
( SELECT *
FROM P
WHERE NOT EXISTS
( SELECT *
FROM MP
WHERE MID = M.MID
AND PID = P.PID ) );
SELECT M.MID
FROM M
WHERE M.MID IN
(SELECT MP.MID
FROM MP
GROUP BY MP.MID
HAVING COUNT(*) = (SELECT COUNT(*) FROM P))