此任务应在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
始终填充有效supplierid
且supplier.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] 删除。
我来说两句