访问SQL count()查询

吉尔兹1

此任务应在Access 1查询中完成。有3个表:

  • address {id, address, city, postalcode, country, supplierid}
  • supplier {supplierID, supplierName, nameid}
  • contactname {nameid, firstname, lastname, phone}

我需要创建查询,其结果如下表所示:

{country, supplierNumber, supplierName, firstname, lastname, phone}

supplierNumber特定国家/地区的公司数量在哪里

对于只有1个公司country, supplierName, firstname, lastname, phone字段的国家,必须填写;2个或更多公司的country, supplierNumber字段必须填写。

所以我有个简单的主意:

SELECT COUNT() ... 
FROM ... INNER JOIN ... ON ...
HAVING COUNT() ...
GROUP BY ...
UNION
...

但是我遇到了很多问题。GROUP BY需要的所有字段SELECT由于COUNT(); UNION需要在表中使用相等数量的字段,因此也许第二个表应该用NULL字段或其他内容进行补充所以我不知道应该以哪种方式执行此任务。请帮我。

沃尔夫冈·凯斯

假设address.supplierid始终填充有效supplieridsupplier.nameid始终填充有效nameid,则可以使用UNION如下查询来获得所需的结果第一部分选择一个供应商所在的国家/地区和供应商/联系人,第二部分选择一个供应商以上的所有竞争(一个地址以上的国家):

SELECT a.country, 1 AS supplierNumber, s.supplierName, c.firstname, c.lastname, c.phone
FROM (address AS a INNER JOIN supplier AS s ON a.supplierid = s.supplierid) 
  INNER JOIN contactname AS c ON s.nameid = c.nameid
WHERE ((a.country) In (SELECT country FROM address GROUP BY country HAVING Count(*)=1))
UNION
SELECT a.country, Count(*), Null, Null, Null, Null
FROM address AS a GROUP BY country HAVING Count(*)>1

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章