2016-10-28 4 views
0

В моей таблице заказов у ​​меня есть для каждого заказа три задачи (id_task). Если id_address соответствует id_address 14, то я хочу показать все задачи этого конкретного id_order.SQL-запрос, добавляющий строки в result-sql server 2012

id_order | id_task | id_address 
1  | 556 | 12 
1  | 557 | 14 
1  | 558 | 11 
2  | 559 | 56 
2  | 560 | 88 
2  | 561 | 77 

результаты, когда матч id_address = 14

id_order | id_task | id_address 
1  | 556 | 12 
1  | 557 | 14 
1  | 558 | 11 

Как мне это сделать?

я сейчас:

select id_order, id_task, id_address 
from order 
where id_address = 14 

Конечно, это не работает. Я получаю только задачу 557. Но я также хочу получить другие результаты от id_order. Но как?

ответ

3

Вот простое решение:

select 
     id_order 
    , id_task 
    , id_address 
from 
    [order] 
where 
    id_order IN (
      select 
       id_order 
      from 
       [order] 
      where 
       id_address = 14) 
+0

Ваше лучшее. Благодаря!!! –

+0

Просто примите это, если это решит вашу проблему :) –

2

Вы можете использовать EXISTS:

select id_order, id_task, id_address 
from order t1 
where exists (select 1 
       from order t2 
       where t1.id_order = t2.id_order and t2.id_address = 14) 
0

Вы можете, как показано ниже:

SELECT 
    A.* 
FROM 
    Order A INNER JOIN 
    Order B ON A.id_order = B.id_order 
WHERE 
    B.id_address = 14 
Смежные вопросы