IM试图
"获取通过任何代理商订购的产品ID,这些代理商至少从京都的客户处获得一份订单,按ID从最高到最低排序。"
我将如何在SQL中编写此代码?这就是我目前所拥有的
SELECT pid FROM orders
WHERE cid IN (
Select cid FROM customers
WHERE cid = 'c006'
);
答案 0 :(得分:0)
你可以试试这个
`SELECT pid FROM orders WHERE cid IN ( Select cid FROM customers
WHERE cid.city == "Kyoto") order by pid DESC;`
在这种情况下,您不需要明确提及客户的ID(c006)。 还有其他几种方法也可以使用join What is the difference between "INNER JOIN" and "OUTER JOIN"?这个帖子包含所有需要的信息..
SELECT pid FROM orders WHERE cid == "c006" order by pid;
就是这样。整个查询是挖掘那个城市==京都的cid。如果我理解正确的话。
答案 1 :(得分:0)
SELECT o.pid FROM orders AS o INNER JOIN customers AS c ON o.pid = c.cid WHERE c.cid = "c006" ORDER BY p.pid DESC
我建议在此查询中使用内部联接。
答案 2 :(得分:0)
这可能会提供您正在寻找的内容。对于此请求:
"获取至少通过任何代理商订购的产品ID 来自京都的客户的一份订单,按ID从最高到最高排序 。最低"
您似乎想要一个与代理列表关联的产品列表。代理商必须至少有一份来自京都客户的订单。
SELECT pid
FROM Orders
WHERE aid IN
(
SELECT o.aid
FROM Orders o
INNER JOIN Customers c ON o.cid = c.cid
WHERE c.city = 'Kyoto'
)
ORDER BY pid
;
子查询返回一个代理商ID的列表,这些代理商ID与京都的客户至少有一个订单。主查询返回派生的代理列表的产品ID列表。
请参阅SQLFiddle