我无法找到以下问题的解决方案:
哪些供应商(lev)只能提供爱好部门出售的物品?
我到目前为止的查询是:
SELECT DISTINCT leverancier.lev
FROM leverancier
JOIN inkart ON leverancier.lev = inkart.lev
JOIN artikel ON inkart.art = artikel.art
JOIN verkart ON artikel.art = verkart.art
JOIN afdeling ON verkart.afd = afdeling.afd
WHERE afdnaam = 'Hobby'
但这仍然包括除了爱好文章之外还供应其他文章的供应商。什么是过滤它们的最佳方法?
答案 0 :(得分:1)
SELECT DISTINCT leverancier.lev , AFDNAAM
FROM leverancier
JOIN inkart ON leverancier.lev = inkart.lev
JOIN artikel ON inkart.art = artikel.art
JOIN verkart ON artikel.art = verkart.art
JOIN afdeling ON verkart.afd = afdeling.afd
WHERE AFDNAAM = 'HOBBY'
EXCEPT
SELECT DISTINCT leverancier.lev , AFDNAAM
FROM leverancier
JOIN inkart ON leverancier.lev = inkart.lev
JOIN artikel ON inkart.art = artikel.art
JOIN verkart ON artikel.art = verkart.art
JOIN afdeling ON verkart.afd = afdeling.afd
WHERE AFDNAAM <> 'HOBBY'
答案 1 :(得分:1)
我认为解决此问题的最简单方法是使用聚合:
SELECT leverancier.lev , AFDNAAM
FROM leverancier JOIN
inkart
ON leverancier.lev = inkart.lev JOIN
artikel
ON inkart.art = artikel.art JOIN
verkart ON artikel.art = verkart.art JOIN
afdeling ON verkart.afd = afdeling.afd
GROUP BY leverancier.lev
HAVING MIN(AFDNAAM) = MAX(AFDNAAM) and
MIN(AFDNAAM) = 'HOBBY';
也就是说,'HOBBY'
是供应商数据中唯一的部门。