不寻常的SQL查询

时间:2013-12-17 22:10:10

标签: mysql

我正在尝试为以下问题找到MySQL查询:

  

正好一个 supllier

提供了多少篇文章
  • 文章在 artikel
  • 表中
  • 供应商在 leverancier
  • 表中
  • 连接它们的表格是 inkart 表格

enter image description here

我到目前为止的查询是:

SELECT 
    COUNT(artikel.art)
FROM
    artikel
        JOIN
    inkart ON artikel.art = inkart.art
        JOIN
    leverancier ON inkart.lev = leverancier.lev
GROUP BY artikel.art
HAVING COUNT(leverancier.lev) = 1

但是这给了我错误的(不)结果。我想我必须在某个地方使用子查询,但我不知道如何。

2 个答案:

答案 0 :(得分:1)

您只需计算唯一leverancier.lev,这将列出artikel.art

SELECT artikel.art
FROM   artikel
        JOIN inkart ON artikel.art = inkart.art
        JOIN leverancier ON inkart.lev = leverancier.lev
GROUP  BY artikel.art
HAVING COUNT(DISTINCT leverancier.lev) = 1

如果你想要文章的数量,

SELECT COUNT(*)
FROM
(
    SELECT artikel.art
    FROM   artikel
            JOIN inkart ON artikel.art = inkart.art
            JOIN leverancier ON inkart.lev = leverancier.lev
    GROUP  BY artikel.art
    HAVING COUNT(DISTINCT leverancier.lev) = 1
) a

答案 1 :(得分:1)

select count(artikel.art)
from artikel
where 1= (select count(*) from inkart
           join leverancier on inkart.lev=leverancier.lev
           where inkart.art=artikel.art
         )