استخراج اطلاعات از چند جدول در SQL Server
باسلام خدمت دوستان عزیز
سوالم را با یک مثال شروع می کنم فرض بکنید ما یک جدول اصلی به نام T داریم که داری فیلد های Cod و Name و Family که مثلا داخل آن اطلاعات 100 نفر درج شده . و یه جدول دیگر به نام T1 داریم که دارای فیلد های Cod و Tell و Email که مثلا دارای 20 رکورد هست . فرض کنید افرادی که تلفن و ایمیل خود را وارد نمایند این اطلاعات در جدول T1 ذخیره می شود و جدول T و T1 از طریق فیلد Cod با هم در ارتباط هستند.
حالا مشکل من از اینجا شروع میشه که من می خواهم در خروجی اسامی تمام افراد را نمایش بده و کسایی که تلفن و ایمیل خود را وارد کرده اند را نشان بده و کسایی که وارد نکرده اند خالی باشد .
select T.Name ,T.Family ,T1.Tell ,T1.Email from T ,T1
ولی در دستور بالا اسامی هر 100 نفر موجود در جدول T را نشان نمی دهد. ولی من می خواهم اسامی هر 100 نفر از جدول T را نمایش بده ولی آن 20 نفر از جدول T1 که دارای تلفن هستند هم با مشخصاتشان نشان دهد و شماره تلفن و ایمیل 80 نفر دیگر را خالی بگذارد.
آیا این کار امکان پذیر می باشد.
باتشکر و سپاس فراوان
3 پاسخ
اگر میخواهید تمام اطلاعات رو چه فیلد های خالی و چه فیلد های پر هر دو تا جدول رو با هم نشونتون بده از کد زیر استفاده کنید
select * from B1.dbo.T ,b1.dbo.T1
ضمناً B1 اسم دیتا بیس من بود ، اگر هم میخواهید کد های تکراری نشان داده نشه که از distinct میتونی استفاده کنی
سلام دوست عزیز
فکر کنم سوالم را بد مطرح کردم.
در مثالی که من گفتم فیلد Cod در جدول T کلید اصلی میباشد و فیلد Cod در جدول T1 فیلد فرعی .
تعداد اعضاء جدول T برابر 100 عضو (یعنی جدول T دارای 100 ردیف می باشد ) میباشد. که شماره تلفن و ایمیل 20 نفر ( یعنی جدول T1 دارای 20 ردیف میباشد ) از این اعضاء در جدول T1 ثبت شده است. حالا من می خواهم در یک نگاه لیست هر 100 نفر را مشاهده نمایم و متوجه بشوم که کدام یک از این 100 نفر شماره تلفن و ایمیل خودرا ثبت کرده اند. ( عنواین لیست هم مثلا کد ، نام ، فامیلی ، تلفن ، ایمیل میباشد . که سه عنوان اول مربوط به جدول 100 ردیفی T میباشد و دو فیلد آخری مربوط به جدول 20 ردیفی T1 می باشد).
از کد زیر استفاده کنید تمام نفرات داخل جدول رو میاره حتی کسانی که ایمیل رو وارد نکردند
select
t.Cod,t.Name,T.Family,T1.Email,t1.Tell from T
left join T1
on t.Cod = t1.Cod group by t.Cod,t.Name,T.Family,t1.Email,t1.Tell
موفق باشید