2013-12-17 49 views
0

我试图找到以下问题MySQL查询:不寻常的SQL查询

多少文章被只有一个 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 

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

回答

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
select count(artikel.art) 
from artikel 
where 1= (select count(*) from inkart 
      join leverancier on inkart.lev=leverancier.lev 
      where inkart.art=artikel.art 
     )