کلمات کلیدی JOIN و UNION در SQL:
برای انتخاب اطلاعات از دو یا چند Table چند راه وجود دارد :
1- استفاده از دستور SELECT و ارجاع آن به چند جدول مورد نظر. مثال برای دو جدول :
SELECT Table1.Filed1,Table2.Field2 FROM Table1,Table2
اگر فیلدهایمان در دو جدول مشترک نباشند نیازی به آوردن نام Table در ابتدای فیلد نمی باشد :
SELECT Field1,Field2 FROM Table1,Table2
2- روش مناسبتر ارتباط پایگاه ها استفاده از کلمه کلیدی JOIN می باشد.
این Keyword خود انواع مختلفی دارد :
الف ) INNER JOIN : در صورت استفاده از این کلمه تمامی ردیفها در صورتی که همتایی در جدول دیگر داشته باشند نمایش داده میشوند. در واقع اگر به ازای هر ردیف در جدول اول یک ردیف در جدول دوم داشته باشید این ردیف ها با استفاده از INNERJOIN به هم ملحق شده و نمایش داده میشوند اما در غیر اینصورت خیر. مثال برای دو جدول :
ُSELECT Field1,Field2,... FROM Table1 INNER JOIN Table2
ON Table1.KeyField = Table2.KeyField
ب) LEFT JOIN : این دستور محدودیت INNER JOIN را نداشته و تمامی ردیفهای جدول اول "حتی اگر همتایی در جدول دوم نداشته باشند" را نمایش می دهد. مزیت INNER JOIN به LEFT JOIN سرعت بیشتر آن است. مثال :
ُSELECT Field1,Field2,... FROM Table1 LEFT JOIN Table2
ON Table1.KeyField = Table2.KeyField
پ) RIGHT JOIN : برعکس LEFT JOIN است یعنی تمامی ردیفهای جدول دوم "حتی اگر همتایی در جدول اول نداشته باشند" را نمایش می دهد.
3- کلمه کلیدی دیگری که در SQL به منظور انتخاب از چند پایگاه بکار میرود UNION است. UNION مشابه JOIN عمل میکند با این تفاوت که در هنگام استفاده از UNION باید توجه داشت که تمامی فیلدها از پایگاه های مختلف حاوی یک نوع داده باشند.
مشخصه اصلی UNION این است که علاوه بر انتخاب رکوردها از چند پایگاه، تنها داده های غیر شبیه و مجزا (Distinct) و نه تکراری را لیست میکند. در واقع UNION کار کلمه DISTINCT را هم انجام میدهد. مثال :
SELECT Field1 FROM Table1 UNION Field1 FROM Table2
نتیجه این دستور کل رکوردهای فیلد1 در هر دو جدول خواهد بود و داده های تکراری حذف خواهند شد.
Keyword دیگری بنام UNION ALL هم وجود دارد که مشابه روش اول است و تمام رکوردها را چه تکراری و چه غیر تکراری لیست میکند.
موفق باشید....