2016-10-05 1 views
0

Кажется, что у меня проблема, сворачивающая мой подзапрос на 3 уровня в оператор объединения. Heres код:Свертывание подзапроса из 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

EDIT: Я пытаюсь показать идентификаторы продуктов, заказанных через любой агент, который делает, по крайней мере один заказ для клиента в Киото

ответ

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' 

Я думаю, что псевдонимы (о, оо и с) необходимы, чтобы заставить его работать, как ожидалось

1

Почему вы выбирая из заказов таблицы несколько раз, а также я думаю, что ваши агенты и таблицы продукты не имеют никакой пользы здесь.

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

помощь относится к агентам, так или иначе, это отношение, но не знает, почему – MageeWorld

+0

но если он извлекается из заказов таблицы, чтобы без необходимости агентов. – Esty

+0

Я отредактировал вопрос, чтобы указать причину. –

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'