استخراج اطلاعات از دو جدول

با نام و یاد خداوند. سلام خدمت کاربران گرامی
با دوره آموزش مبانی SQL Server در خدمت شما عزیزان هستیم. در جلسات قبل همه ی دستورات و  select هایی که انجام می دادیم روی یک جدول بود ، یعنی  فقط داده های ما از جدول Student  استخراج می شد. در این جلسه قصد داریم که به آموزش استخراج اطلاعات از دو جدول را بپردازیم. ابتدا با استفاده از دستور select  اطلاعات جداول خود را مشاهده می کنیم.

select *
from Student

خروجی جدول student:

 

استخراج اطلاعات از دو جدول | خروجی جدول student

خروجی جدول Course:

 

نکته: در جدول Course  از کلید خارجی (FOREIGN KEY) استفاده شده است. کلید خارجی (FOREIGN KEY ) برای ارتباط و لینک شدن دو جدول می باشد .

با استفاده از دستوری که در زیر می نویسم می خواهیم  اطلاعات را از ۲ تا جدول استخراج کنیم:

select *    
from student  ,Course

خروجی جدول student و Course:

 

استخراج اطلاعات از دو جدول | خروجی جدول student و course

 

به عددی که در کادر قرمز رنگ نوشته شده است توجه کنید  ، در جدول Course  چند ردیف داده دارم (۹ ردیف ) ، و در جدول Student چند ردیف (۶ ردیف ) ، اما این جدول دارای ۵۴ ردیف می باشد در واقع با نوشتن این دستور( from student,Course ) باعث می شود که  تعداد ردیف های جدول student  ضربدر  تعداد ردیف ها ی جدول Course شود  که اطلاعاتش هم غلط می باشد .

با هم این مشکل را دیدیم برای رفع این مشکل باید این Query  را به شکل زیر تغییر دهیم.

select *    
from student  ,Course
where student.id=course.ID_FK_Student

با هم خروجی این دستور را مشاهده می کنیم:

استخراج اطلاعات از دو جدول

بدین صورت که  از دستور شرطی where  استفاده می کنیم و می نویسیم از جدول student   فیلد  id آن مساوی باشد با فیلد  ID_FK_Student(که این فیلد همان فیلد خارجی است  برای ارتباط بین جدول student  و Course  )

 

نکته:  در شکل فوق مشاهده می کنید، دو تا فیلد داریم با مقادیر مشابه  ، چون از select  *   استفاده کرده ایم یعنی تمام فیلدها ی دو جدول را نمایش بده

برای جلوگیری از این کار ما می توانیم به جای * نام فیلدهایی که می خواهیم ببینیم را جلوی دستور  select  بنویسیم که برای این کار باید نام فیلدها را با علامت کاما ( ، ) از یکدیگر جدا کنیم .

select  نام فیلد۳ ,  نام فیلد ۲,   نام فیلد۱

 برای مثال :

select id,NameStudent,lastname,Lesson,Numbeer    
from student  ,Course
where student.id=course.ID_FK_Student

با هم خروجی این دستور را مشاهده می کنیم:

استخراج اطلاعات از دو جدول | انتخاب چند فیلد

در تصویر فوق مشاهده می کنید که زیر فیلد id  خط قرمز کشیده شده  است و در کادر Messages پیغام خطا داده است ، این پیغام به ما می گوید که در هر دو جدول ستونی بنام id  وجود دارد و ما باید مشخص کنیم که id  کدام جدول مد نظرمان است .

برای این که مشخص کنیم که کدام فیلد از کدام جدول آمده است از فرمول زیر استفاده می کنیم

نام فیلد . اسم جدول
student.id
Course.id

دستور بالا را بدین شکل تغییر می دهیم:

select student.id,NameStudent,lastname,Lesson,Numbeer    
from student  ,Course
where student.id=course.ID_FK_Student

با هم خروجی این دستور را مشاهده می کنیم:

استخراج اطلاعات از دو جدول | انتخاب فیلد ها از جداول متفاوت به صورت همزمان

نکته: بهتر است برای خوانایی بیشتر سعی کنید که نام جدول را با نام فیلد بزنید . و به جای اینکه نام جدول به این بزرگی را بنویسیم می توانیم یک دگرگونی در نام جدول انجام دهیم .

نام جدول را به شکل زیر می نویسیم

اسم دلخواهی که می خواهیم به جای نام جدولمان باشد     نام جدول
student   St
Course Co

در این مثال دستورات بدون تغییر نام جداول نمایش داده می شود:

select student.id,student.NameStudent,student.lastname,Course.Lesson,Course.Numbeer    
from student  ,Course
where student.id=course.ID_FK_Student

با هم خروجی این دستور را مشاهده می کنیم:

استخراج اطلاعات از دو جدول | مثال

در این مثال دستورات با انتخاب نام مخفف برای جداول  نمایش داده شده است:

select st.id,st.NameStudet,st.lastname,Co.Lesson,Co.Numbeer
from student st ,Course Co
where st.id=Co.ID_FK_Student

با هم خروجی این دستور را مشاهده می کنیم:

استخراج اطلاعات از دو جدول | انتخاب نام مخفف برای جداول

مشاهده می کنیم که خروجی این ۲ کوئری یکسان می باشد و ما برای خوانایی بیشتر می توانیم از دگرگونی نام جداول استفاده کنیم .در این جلسه با استخراج اطلاعات از دو جدول آشنا شدیم ، در جلسه بعد قصد داریم تا با مفهوم کوئری های تو در تو بیشتر آشنا شویم.

با  آموزش مبانی SQL Server در خدمت شما هستیم. لطفا سوالات ، نظرات و پیشنهادات خود را در قسمت دیدگاه ها با ما در میان بگذارید.

به این مقاله چند تا ستاره میدی؟
[تعداد رای: 0 امتیاز: 0]