使用如下3个表:职员.DBF:职员号C(3),姓名C(6),性别C(2),组号N(1),职务C(10)客户.DBF:客户号C(4),客户名C(36),地址C(36),所在城市C(36)订单.DBF:订单号C(4),客户号C(4),职员号C(3),签订日期D

admin2009-02-15  18

问题 使用如下3个表:职员.DBF:职员号C(3),姓名C(6),性别C(2),组号N(1),职务C(10)客户.DBF:客户号C(4),客户名C(36),地址C(36),所在城市C(36)订单.DBF:订单号C(4),客户号C(4),职员号C(3),签订日期D,金额N(6,2)显示没有签订任何订单的职员信息(职员号和姓名),正确的SQL语句是______。

选项 A、SELECT职员.职员号,姓名FROM职员JOIN订单    ON订单.职员号=职员.职员号GROUP BY职员.职员号HAVING COUNT(*)=0
B、SELECT职员.职员号,姓名FROM职员LEFT JOIN订单    ON订单.职员号=职员.职员号GROUP BY职员.职员号HAVING COUNT(*)=0
C、SELECT职员号,姓名FROM职员    WHERE职员号NOT IN(SELECT职员号FROM订单)
D、SELECT职员.职员号,姓名FROM职员    WHERE职员.职员号<>(SELECT订单.职员号FROM订单)

答案C

解析 查询要使用SELECT命令,本题是嵌套查询。已签订订单的职员号信息存储在订单表中,而职员信息存储在职员表中。由内层查询:
SELECT职员号FROM订单获得的结果是签订订单的职员号值的集合,外层查询的结果列出除了内层查询集合中的职员的职员号和姓名,即外层查询的结果依赖于内层查询的结果。
由于内层查询结果是一个集合,所以,要用“NOT IN”运算符,不能用“<>”运算符。内层查询必须用一对圆括号括起来。
转载请注明原文地址:https://kaotiyun.com/show/acKZ777K
0

最新回复(0)