将3层子查询折叠为Join语句

时间:2016-10-05 03:37:25

标签: sql join subquery

我似乎遇到了将我的3层子查询折叠到连接语句的问题。 下面是代码:

Select pid
from orders
where aid in (
    select aid
    from orders
    WHERE cid IN (
        select cid
        from customers
        where city = 'Kyoto'
                 )
             );

The Database im currently working with

编辑:我正在尝试展示通过在京都至少为客户订购一个订单的代理商订购的产品的ID

3 个答案:

答案 0 :(得分:1)

为什么要多次从订单表中进行选择,我认为您的代理商和产品表在此处没有用处。

SELECT orders.pid 
FROM ORDERS orders 
INNER JOIN CUSTOMERS customers ON customers.cid = orders.cid 
AND customers.city = 'Kyoto'

答案 1 :(得分:0)

试试这个:

Select o.pid 
from orders o 
inner join orders oo on oo.aid = o.aid
inner join customers c on c.cid = oo.cid and c.city = 'Kyoto'

我认为必须使用别名( o oo c )才能使其按预期工作

答案 2 :(得分:0)

select A.pid 
from orders as A
    INNER jOIN
Orders as B
on A.aid=B.aid
    INNER JOIN 
customers as C
on B.cid=C.cid
where C.city = 'Kyoto'