PDA

View Full Version : سوال: حال يك Join مي خواهم داشته باشم شامل تمام ركوردهاي بانك UserDB كه شامل Viewاست با جدول بانك ديگر؟



ali_abbasi22145
چهارشنبه 02 اردیبهشت 1388, 16:50 عصر
سلام
در SQL SERVER 2000:
من يك بانك UserDB كه شامل Viewيك با فيلدهاي Fname,Lname,EmP_Numer,Grad مي باشد. بانك ديگر CardDB كه شامل جدولي با فيلدهاي ,EmP_Numer No_print,Print_Dateمي باشد.

اگر شخصي در بانك UserDB كه شامل View است داراي نام علي وخانوادگي عباسي و كارمندي 100 و نمره20 باشد ممكن است دربانك ديگر CardDB كه شامل جدول مي باشد تعداد چاپ كارت برايش 2 عدد و تاريخ چاپ 10/01/1388 و با كارمندي 100 باشد.
اگر شخصي در بانك UserDB كه شامل View است داراي نام حسين وخانوادگي احمدي و كارمندي 101 و نمره 17 باشد ممكن است دربانك ديگر CardDB كه شامل جدول مي باشد هيچ ركوردي نداشته باشد.
كارمندي 101و100 براي افراد يكتا مي باشد.

سوال: حال يك Join مي خواهم داشته باشم شامل تمام ركوردهاي بانك UserDB كه شامل Viewاست با جدول بانك ديگر؟

ali_abbasi22145
پنج شنبه 03 اردیبهشت 1388, 09:15 صبح
سلام
آقاي ثباتي لطفا كمك كنيد.

ali_abbasi22145
شنبه 05 اردیبهشت 1388, 10:07 صبح
سلام
سوالم را ساده تر مي گويم:
يك View با فيلدهاي Fname,Lname,EmP_Numer,Grad داريم و جدولي با فيلدهاي ,EmP_Numer No_print,Print_Date مي باشد.
يك تركيب مي خواهم شامل تمام ركوردهاي View و هرجا EmP_Numer در جدولم باشد آنوقت فيلدهاي No_print,Print_Date هم داشته باشم.

JaguarXF
شنبه 05 اردیبهشت 1388, 10:12 صبح
از لفت جوین استفاده کنید.

ali_abbasi22145
شنبه 05 اردیبهشت 1388, 13:30 عصر
سلام
من اين اسكريپت را نوشتم:
SELECT CardDB2.dbo.Ext_View.first_name, CardDB2.dbo.Ext_View.last_name,CardDB2.dbo.Ext_Vie w.employee_number ,

CardDB.dbo.CardTable.sicard,CardDB.dbo.CardTable.t ag,CardDB.dbo.CardTable.photo_tag, CardDB.dbo. CardTable.log_of_card_print,
CardDB.dbo.CardTable.creation_date,CardDB.dbo.Card Table.creation_date_sh,CardDB.dbo.CardTable.last_m odified,CardDB.dbo.CardTable.last_modified_sh,
CardDB.dbo.CardTable.photo_last_modified, CardDB.dbo.CardTable.photo_last_modified_sh,CardDB .dbo.CardTable.print_date,CardDB.dbo.CardTable.pri nt_date_sh,
CardDB.dbo.CardTable.number_of_print, CardDB.dbo.CardTable.number_of_modified, CardDB.dbo.CardTable.number_of_photo_modified,
CardDB.dbo.CardTable.print_status, CardDB.dbo.CardTable.card_format, CardDB.dbo.CardTable.picture_file_name

FROM CardDB2.dbo.Ext_View
INNER JOIN CardDB.dbo.CardTable ON ( (LTrim(RTrim(CardDB2.dbo.Ext_View.employee_number) ) <> '')or (CardDB2.dbo.Ext_View.employee_number <> null) )

اما خروجي همه ركوردها 2 بار تكرار شده اند مثل شكل زير و مي خواهم تكراريها نباشند:

JaguarXF
شنبه 05 اردیبهشت 1388, 18:14 عصر
شما که دوباره کار خودتو کردی و اینر جوین نوشتی!

این چیزی که میخواهید برای من تعریفش میشه لفت جوین (http://www.w3schools.com/sql/sql_join_left.asp)
داخل همین اسکریپت . بجای کلمه inner بنوبسید LEFT و نتیجه رو امتحان کنید.

ali_abbasi22145
شنبه 12 اردیبهشت 1388, 12:28 عصر
سلام
اگر بخواهم از سرور به نام ACCESS (كه ACCESS نام كامپيوتر است) بانك CardDB3 جدول CardTable تركيب(Left Join) كنم با سرور LOCAL بانك CardDB جدول CardTable چه اسكريپتي بنويسم؟
به شكل زير نگاه كنيد: