【问题标题】:SQL ANSI: How to apply the "division operation" with 4 tables?SQL ANSI:如何对 4 个表应用“除法运算”?
【发布时间】:2019-09-11 22:18:58
【问题描述】:

我想尝试获取“所有售出所有书籍的员工姓名”:

我试过了:

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 title FROM books 不是选择员工的方式。加倍努力。

标签: sql relational-division ansi-sql


【解决方案1】:

你的问题有点不清楚。假设我的理解正确,您想知道哪些员工卖了每本书,无论是相同的购买还是不同的购买。这是使用聚合的一种方法:

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)

【讨论】:

    猜你喜欢
    • 2016-11-25
    • 2013-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-26
    • 2017-11-15
    • 1970-01-01
    • 2012-11-21
    相关资源
    最近更新 更多