pop*_*ack -5 sql relational-algebra logical-operators
显示订阅了足球和国际象棋而不是网球的员工的详细信息.
SELECT *
FROM employee
WHERE empid IN (SELECT empid
FROM subscription
WHERE facid IN (SELECT facid
FROM facility
WHERE facility = 'Chess'
OR facility = 'Football'))
AND empid NOT IN (SELECT empid
FROM subscription
WHERE facid = (SELECT facid
FROM facility
WHERE facility = 'Tennis'));
SELECT DISTINCT empid
FROM subscription
WHERE facid IN (SELECT facid
FROM facility
WHERE facility = 'Chess'
OR facility = 'Football')
AND facid != (SELECT facid
FROM facility
WHERE facility = 'Tennis');
Run Code Online (Sandbox Code Playgroud)
第一个给出正确的结果.
第一个查询: 所有已订阅国际象棋或足球但没有订阅网球的员工.
第二个查询: 所有已经订阅国际象棋或足球的empid.
您的第二个查询是过滤订阅,一个订阅只能链接到一个设施.这意味着,如果您订购国际象棋,当然不会同时订购网球,如果您发现网球订阅,它将被排除在外,因为它不是国际象棋或足球.任何订阅国际象棋和网球的EmpID都将包含在国际象棋的订购中,但由于订阅了网球,因此不会被排除在外.
| 归档时间: |
|
| 查看次数: |
86 次 |
| 最近记录: |