2013-05-25 2 views
0

У меня есть две базы данных AgencyDB (первичная БД) и AgencyBackupDB (удаленная информация от агентстваDB от пользователя), и у меня есть эта две таблицы в обеих БД (но нет никаких связей в AgencyBackupDB между таблицами). это мой вопрос: Я хочу выбрать всю информацию из агентстваBackupDB в таблицах SabtHazine и информацию из связанной таблицы Hazine.i хотите, если HazineID из таблицы Hazine не существует в AgencyBackupDB, выберите его из агентстваDB. это сценарий Все Tabel данные испытанийConfused selection Info From Two DB

CREATE TABLE [dbo].[Hazine](
    [HazineID] [int] IDENTITY(1,1) NOT NULL, 
    [HazineGroupID] [smallint] NOT NULL, 
    [Mablagh] [int] NOT NULL, 
    [HazineName] [nvarchar](250) NOT NULL, 
CONSTRAINT [PK_Hazine] PRIMARY KEY CLUSTERED 
(
    [HazineID] ASC 
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] 
) ON [PRIMARY] 
GO 
SET IDENTITY_INSERT [dbo].[Hazine] ON 
INSERT [dbo].[Hazine] ([HazineID], [HazineGroupID], [Mablagh], [HazineName]) VALUES (1, 1, 20000, N'صابون گل') 
INSERT [dbo].[Hazine] ([HazineID], [HazineGroupID], [Mablagh], [HazineName]) VALUES (3, 2, 10000, N'بروس') 
SET IDENTITY_INSERT [dbo].[Hazine] OFF 
/****** Object: Table [dbo].[SabtHazine] Script Date: 04/07/2013 17:34:59 ******/ 
CREATE TABLE [dbo].[SabtHazine](
    [SabtHazineID] [int] IDENTITY(1,1) NOT NULL, 
    [HazineID] [int] NOT NULL, 
    [EndUserName] [nvarchar](20) NOT NULL, 
    [Tedad] [smallint] NOT NULL, 
    [sabtHazineDate] [date] NOT NULL, 
    [Describtion] [nvarchar](500) NULL, 
CONSTRAINT [PK_SabtHazine] PRIMARY KEY CLUSTERED 
(
    [SabtHazineID] ASC 
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] 
) ON [PRIMARY] 
GO 
SET IDENTITY_INSERT [dbo].[SabtHazine] ON 
INSERT [dbo].[SabtHazine] ([SabtHazineID], [HazineID], [EndUserName], [Tedad], [sabtHazineDate], [Describtion]) VALUES (6, 3, N'SA', 3, CAST(0xC2360B00 AS Date), N' 
') 
SET IDENTITY_INSERT [dbo].[SabtHazine] OFF 
/****** Object: ForeignKey [FK_SabtHazine_Hazine] Script Date: 04/07/2013 17:34:59 ******/ 
ALTER TABLE [dbo].[SabtHazine] WITH CHECK ADD CONSTRAINT [FK_SabtHazine_Hazine] FOREIGN KEY([HazineID]) 
REFERENCES [dbo].[Hazine] ([HazineID]) 
GO 
ALTER TABLE [dbo].[SabtHazine] CHECK CONSTRAINT [FK_SabtHazine_Hazine] 
GO 
+1

Просьба предоставить образцы данных и ожидаемые результаты. –

+0

Похоже, что вы хотите «ЛЕВАТЬ ВЗАИМОДЕЙСТВУЮТ» между базами данных и результатами «COALESCE». – HABO

+0

Я пишу этот запрос, но он дает мне эту ошибку: ** Все запросы, объединенные с использованием оператора UNION, INTERSECT или EXCEPT, должны иметь равное количество выражений в своих целевых списках. ** выберите SabtHazineID, SabtHazine.HazineID, EndUserNAme , Tedad, sabtHazineDate, Describtion из dbo.SabtHazine LEFT JOIN dbo.Hazine ON dbo.Hazine.HazineID = dbo.SabtHazine.HazineID союза всех выберите Hazine.HazineName, Hazine.Mablagh из AgencyDB.dbo.Hazine где HazineID не in (выберите HazineID от dbo.Hazine) –

ответ

0
select 
BsH.SabtHazineId, 
BsH.HazineID, 
BsH.EndUserNAme, 
BsH.Tedad, 
BsH.sabtHazineDate, 
BsH.Describtion, 
    Coalesce(BH.HazineName, H.HazineName) as [HazineName], 
    Coalesce(BH.Mablagh, H.Mablagh) as [Mablagh] 
    from AgencyBackupDB.dbo.SabtHazine as BSH 
    left outer join AgencyBackupDB.dbo.Hazine as BH on BH.HazineID = BSH.HazineID 
    left outer join dbo.Hazine as H on H.HazineID = BSH.HazineID 
0

Это может указывать вам в лучшую сторону:

select BH.SabtHazineId, BH.HazineID, BH.EndUserNAme, BH.Tedad, BH.sabtHazineDate, BH.Describtion, 
    Coalesce(BSH.HazineName, H.HazineName) as [HazineName], 
    Coalesce(BSH.Mablagh, H.Mablagh) as [Mablagh] 
    from AgencyBackupDB.dbo.SabtHazine as BSH left outer join 
    AgencyBackupDB.dbo.Hazine as BH on BH.HazineID = BSH.HazineID left outer join 
    dbo.Hazine as H on H.HazineID = BSH.HazineID 

Он присоединяется к Hazine таблиц в обеих базах данных (при условии, что вы запустите его из AgencyDB база данных) и использует COALESCE, чтобы выбрать (не ожидая) значение NULL.

+0

дает ошибку. –

+0

Добро пожаловать. – HABO