Universal Market Corp.已使用数据库架构组织其运营 这里描述。列出的客户本身就是订购量大的零售企业 来自通用市场公司的各种产品的大量转售。不同 customers表中的客户由cid(客户)中的值唯一标识 标识符)列。客户致电代理商(由援助人员唯一识别) 代理表中的值)。每次下订单时,都会在中插入一个新行 订单表,由ordno值唯一标识。
表架构: -
Customers (cid, cname, city, discount)
Agents (aid, aname, city, percent)
Products (pid, pname, city, quantity, price)
Orders (ordno, month, cid, aid, pid, qty, dollars)
根据上面显示的架构,回答以下问题。
答案 0 :(得分:-1)
我试图以易于理解的形式编写查询(忽略性能)。
<强> 1 强>
SELECT pname, pid
FROM Products
WHERE EXISTS (
SELECT 1
FROM Orders
INNER JOIN Agents ON Agents.aid = Orders.aid
WHERE Orders.pid = Products.pid
Agents.city = Products.city
)
这意味着以下内容:列出产品所在城市代理商所采取的相应(第一个条件)订单的所有产品(第二个条件)。
<强> 2 强>
SELECT DISTINCT Orders.pid
FROM Orders
WHERE Orders.cid IN (
SELECT DISTINCT OrdersThroughA03.cid
FROM Orders AS OrdersThroughA03
WHERE OrdersThroughA03.aid = 'a03'
)
此查询首先获取通过 a03 (在括号中)订购的所有客户,然后列出所有不同的产品(DISTINCT
表示它将仅显示每个产品一次)订购由这些人。我在内部查询中为OrdersThroughA03
添加了一个表别名(Orders
),以避免使用不明确的列名。