2013-06-13 2 views
0

Я ищу запрос, который имеет два условия оператора, скажем, у меня есть 3 столбца в таблице a и таблице сейчас, я хочу увидеть результат как будто (a.id = b.id или a.cid = b.cid) И (a.site = b.site)Внутренняя связь с оператором и оператором SQL

Таблица A

ID|CID|SITE 
1| 2 |sss 
2| 3 |ddd 
3| 4 |ddd 

Таблица B

ID|CID|SITE 
1| 2 |sss 
3| 3 |ddd 
3| 5 |sss 

теперь результат должен показать ,

ID|CID|SITE 
1| 2 |sss 
3| 3 |ddd 

Это означает, что если (a.id = b.id И a.site = b.site) ИЛИ (a.cid = b.cid И a.sit = b.site)

Пожалуйста, помогите мне ...

+0

что вы пробовали? –

+0

Это то, что я пробовал, выберите * из таблицы1 как внутреннюю таблицу соединений2 как b on (a.id = b.id AND a.site = b.site) ИЛИ (a.cid = b.cid И a. sit = b.site) – IAmHomes

ответ

1

Как насчет этого?

SELECT a.id,a.cid,a.site 
FROM a 
JOIN b ON a.id=b.id AND a.site=b.site 
UNION ALL 
SELECT a.id,a.cid,a.site 
FROM a 
JOIN b ON a.cid=b.cid AND a.site=b.site 

или, может быть, это?

SELECT a.id, a.cid, a.site 
FROM a JOIN b on a.site=b.site 
WHERE a.id=b.id OR a.cid=b.cid 
0

Я не уверен, если я понимаю ваш вопрос, что вы имеете в виду следующим:

a.d=b.id or a.cid=b.cid 

предполагая при объявлении вы имеете в виду a.id то вы пытаетесь присоединиться на идентификаторами две таблицы. Я скорее объясню внутреннее соединение SQL для вас, и вы сможете попытаться его использовать.

Существует 3 типа объединений на SQL-сервере, внутреннем, внешнем и обоих (полный). Я думаю, вам нужно внутреннее соединение.

Inner Регистрация возвращает все записи соответствия в таблице В для каждой записи в таблице А.

SELECT * FROM TABLEA ta INNER JOIN TABLEB tb on tb.ID = ta.ID 

Убедитесь, что вы понимаете, что если есть повторяющиеся записи в любой таблице, присоединиться возвратят повторяющиеся записи.

2

Хотя вы не указали, какую таблицу взять результаты, ваш пример вывода указывает на то, что вы хотите взять его из таблицы б, так:

Select * From tableb b 
Where exists 
    (Select * From tablea 
    Where site = b.site 
     And (id = b.id or 
      cid = b.cid)) 
+0

Чарльз, это кажется правильным, но мне нужна колонна из таблицы вместе с результатами таблицы. – IAmHomes

Смежные вопросы