2014-06-23 7 views
-2

Есть в любом случае в SQL, который может сделать что-то подобное,Объединение таблиц

Select table1.id, table2.admit, table2.value 
    from table2 join table1 
    on IDs 

Если id в table1 не имеет значения в admit колонке, сделать его null (admit имеет либо 1 или 0 только в table2).

Это означает, что я получаю все идентификаторы в таблице1.

Вот вывод таблицы мне нужно:

id  admit value 
1256 0  Ad 
1254 1  Na 
1255 0  Bk 
1252 null null 

table1 
id 
1256 
1254 
1255 
1252 

table2 
id  admit value 
1256 0 Ad 
1254 1 Na 
1255 0 Bk 
1257 1 Ww 

Помощь оценена. Огромное спасибо.

+1

Не могли бы вы показать некоторые выборочные данные и желаемый результат? Я уверен, что это выполнимо, я просто не понимаю «правила», которые вы даете. –

+0

отредактировал вопрос. Надеюсь, что это ясно. – user3502587

ответ

3

Это даст результаты, которые вы просите:

SELECT T1.ID, T2.ADMIT, T2.VALUE 
FROM Table1 T1 
LEFT OUTER JOIN Table2 T2 
    ON T1.ID = T2.ID 

Вот good article на несколько различных SQL соединений.

на основе @ комментарий Ната, вот что он указывает на:

SELECT T1.ID, ISNULL(T2.ADMIT,0), ISNULL(T2.VALUE,'-NO ENTRY-') 
FROM Table1 T1 
LEFT OUTER JOIN Table2 T2 
    ON T1.ID = T2.ID 
+0

«Если идентификатор в таблице1 не имеет значения в« admit »сделать его« null »- где вы проверяете значение в' admmit в вышеуказанном запросе ..? –

+1

Нуль может быть немного опасным в зависимости от случая использования. Если это может быть правдой для вашего кода, было бы разумно повернуть nulls в какое-то определенное значение. Изменение T2.ADMIT на ISNULL (T2.ADMIT, [insertinel value здесь]) сделает трюк. – Conduit

+0

"('admit' имеет либо 1, либо 0 только в таблице2)" - если мне не нужно ... Я предполагаю, что он хочет все из таблицы 1, но когда ничего в таблице2 не отображаются, что. Если я ошибаюсь, я сказал ему добавить пример данных. – JiggsJedi

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