SQL ANSI:如何将 "division operation" 应用于 4 个表?
SQL ANSI: How to apply the "division operation" with 4 tables?
我想尝试获取“所有售出所有书籍的员工姓名”:
我试过这个:
SELECT title FROM books l1
WHERE l1.id NOT IN (
SELECT l2.id
FROM books l2, purchases p
WHERE (l2.id, p.id) NOT IN (
SELECT ip.book_id, ip.purchase_id FROM purchase_items ip
)
)
我需要使用 SQL ANSI 编写,因为此查询将在 MySQL、Postgres、SQL Server 和 Oracle 上 运行。
你的问题有点不清楚。假设我的理解是正确的,你想知道哪些员工卖掉了每本书,不管是同一次购买还是不同次购买。这是一种使用聚合的方法:
select e.id, e.name
from employees e
join purchases p on e.id = p.employee_id
join purchases_items pi on p.id = pi.purchase_id
group by e.id, e.name
having count(distinct pi.book_id) = (select count(id) from books)
我想尝试获取“所有售出所有书籍的员工姓名”:
我试过这个:
SELECT title FROM books l1
WHERE l1.id NOT IN (
SELECT l2.id
FROM books l2, purchases p
WHERE (l2.id, p.id) NOT IN (
SELECT ip.book_id, ip.purchase_id FROM purchase_items ip
)
)
我需要使用 SQL ANSI 编写,因为此查询将在 MySQL、Postgres、SQL Server 和 Oracle 上 运行。
你的问题有点不清楚。假设我的理解是正确的,你想知道哪些员工卖掉了每本书,不管是同一次购买还是不同次购买。这是一种使用聚合的方法:
select e.id, e.name
from employees e
join purchases p on e.id = p.employee_id
join purchases_items pi on p.id = pi.purchase_id
group by e.id, e.name
having count(distinct pi.book_id) = (select count(id) from books)