Please start any new threads on our new
site at https://forums.sqlteam.com. We've got lots of great SQL Server
experts to answer whatever question you can come up with.
Author |
Topic |
ArnoldG
Starting Member
36 Posts |
Posted - 2015-02-19 : 14:23:32
|
Hi,I have a view built out of 3 joins to 3 tables.In some cases the 3rd table does not exist (some users do not have this 3rd table)Is there a way to protect the view from giving an error, even if this table does not exist?I am using only 1 column from this table3 and I would like to have a NULL in that specific column.CREATE VIEW [MYVIEW] ASSELECT T1.A, T2.A, T3.A --(a NULL value if the table does not exists)FROM Table1 T1 JOIN Table2 T2 JOIN Table4 T3 --(if it exists)GO Is there a way to accomplish this?Thx. |
|
cstokes91
Yak Posting Veteran
72 Posts |
Posted - 2015-02-19 : 14:45:36
|
Yes, you would do something like this: Have separate views depending on if the table exists.IF OBJECT_ID('database.dbo.tablename', 'U') IS NOT NULLCREATE VIEW [MYVIEW] ASSELECT T1.A, T2.A, T3.A --(a NULL value if the table does not exists)FROM Table1 T1 JOIN Table2 T2 JOIN Table4 T3 --(if it exists)GO |
|
|
ScottPletcher
Aged Yak Warrior
550 Posts |
Posted - 2015-02-19 : 16:24:21
|
No real way to do that.Easiest would be to create an empty table, and change the current INNER JOIN to a LEFT OUTER JOIN for that table:CREATE VIEW [MYVIEW] ASSELECT T1.A, T2.A, T3.A --(a NULL value if the table does not exists)FROM Table1 T1 INNER JOIN Table2 T2 LEFT OUTER JOIN Table4 T3 --(if it exists)GO |
|
|
ArnoldG
Starting Member
36 Posts |
Posted - 2015-02-20 : 03:27:03
|
Thanks for both your answers.Since I am not able to create an empty table I think this solution will work best for me:IF OBJECT_ID('database.dbo.tablename', 'U') IS NOT NULL Thanks again. |
|
|
ScottPletcher
Aged Yak Warrior
550 Posts |
Posted - 2015-02-20 : 10:33:50
|
That's not valid syntax, but using dynamic SQL you could create a different view.You could also create a synonym with that name rather than an actual table that pointed to an empty table with a different name. |
|
|
|
|
|
|
|