2016-07-04 2 views
1

Таблица: service_providersSQL запрос для присоединиться к таблице

id name 
----------- 
    1 A 
    2 B 
    3 C 
    4 D 

Таблица service_providers отображения

id service_receiver_id service_provider_id 
--------------------------------------------------- 
1   1      2 
2   4      1 

Как я могу написать запрос SQL для получения service_provider_id = 1, связанные с в приведенной выше таблице отображения ?

Мне нужны результаты, как это:

id associated_with 
--------------------- 
1   2 
1   4 
+1

Можете ли вы объяснить, что вы хотите, неясно, к какой таблице вы хотите присоединиться? – user3378165

ответ

1

Все ваши результаты, кажется, приходят из второй таблицы, так что вам даже не нужно объединение:

SELECT service_receiver_id AS associated_with 
FROM mytable 
WHERE service_provider_id = 1 
UNION ALL 
SELECT service_provider_id AS associated_with 
FROM mytable 
WHERE service_receiver_id = 1 
0
SELECT DISTINCT 
    CASE 
     WHEN r.service_provider_id <> 1 THEN r.service_provider_id 
     ELSE r.service_reciever_id 
    END as associated_with 
FROM 
    Relationships r 
WHERE 
    r.service_provider_id = 1 
    OR r.service_reciever_id = 1 

@ Mureinik правильно, вам не нужно соединение, но чтобы предложить другое решение, которое не требует объединения, вы всегда можете использовать оператор case и OR в предложении where.

Может ли поставщик услуг также быть приемником когда-либо? Или, если существуют повторяющиеся записи, вы, возможно, захотите рассмотреть DISTINCT, чтобы устранить, если это возможно.