Пожалуйста, помогите мне со следующей проблемой:SQL Server присоединиться к таблицам
SQL Server 2012 базы данных
Таблица 1 (T1)
*******************************
| pk_Id | text | fk_t2 | fk_t3|
*******************************
| 1 |text1 | 1 | null|
*******************************
| 2 |text2 | 2 | null|
*******************************
| 3 |text3 | null | 1 |
*******************************
| 4 |text1 | null | 2 |
*******************************
Таблица 2 (T2)
***************
| pk_Id | col1|
***************
| 1 |5285 |
***************
| 2 |6621 |
***************
Таблица 3 (T3)
************************
| pk_Id | col1 | fk_t2 |
************************
| 1 | text1| 1 |
************************
| 2 | text2| 1 |
************************
| 3 | text1| 2 |
************************
Что мне нужно: T2.Col1 T3.Col1 T1.Text
Как вы видите, Т2 связан с Т3, и оба, Т2 и Т3 связанных с T1. в T1, текст столбца являются хранимыми значениями для обеих таблиц (t2 и t3), когда в текстовом столбце указано значение t2, fk_t3 имеет значение null (я знаю плохой дизайн), а когда в текстовом столбце значение t3, fk_t2 является ноль.
Я знаю, что не работает: (возвращает Nothing)
select t2.col1, t3.col1, t1.text
from t2
inner join t1 on t2.pk=t1.fk_t2
inner join t2 on t3.pl=t1.fk_t3
возвращает нуль в t3.col1
select t2.col1, t3.col1, t1.text
from t2
left join t1 on t2.pk = t1.fk_t2
left join t3 on t3.pl = t1.fk_t3
Большое спасибо!
спасибо! ваше решение (coalesce) не возвращает t3.col1, просто смешайте его с тегом t2.col1. Мне нужно иметь t2.col1 и t3.col1 на разных столбцах. Маби, я не понимаю :). Мне нужно t1.text, t2.col1, t3.col1 в обратном – gligom
Тогда просто сделайте это. Я обновил ответ. Но один из них будет нулевым в соответствии с вашим вопросом, и я думал, что вы хотите просто ненулевое значение - независимо от того, из какой таблицы. Но обновленный запрос разделяет столбцы. –
Это было первое, что я сделал. t3.col1 все null в результате :) – gligom