به‌هم پیوستن و الحاق جداول

اینجا هدف توضیح دستور Join نیست و فرض بر این است که شما با این دستورات در پایگاه داده SQL آشنا هستید، اما بد نیست تا برای یادآوری توضیح کوتاهی داده شود. وظیفه دستور Join الحاق دو(و یا بیشتر) جدول و ایجاد یک جدول جدید می‌باشد، در واقع، زمانی که بین دو جدول عمل join را انجام می‌دهیم، از هر جدول یک ستون را انتخاب و به یکدیگر الحاق می‌کنیم. این دو ستون، شامل داده‌ی مشترک در میان دو جدول هست.  دستور Join انواع گوناگونی دارد که شما بسته به نیاز خود می‌توانید از آن‌ها استفاده کنید. در ادامه، به انواع دستور join خواهیم پرداخت.


برای توضیح دستورات Join فرض کنید دو جدول با داده‌های زیر داریم: (این دو جدول را می‌توانید در یک فایل اکسل ایجاد نمایید, یا از طریق یک دیتابیس مانند SQL SERVER و یا ACCESS ایجاد کنید و یا به‌صورت inline بارگذاری نمایید هر سه روش درون فایل پیوست موجود می‌باشد)

 

Table2
CA
Y11
Y24
Table1
BA
X11
X22
X33
  

 

در تمامی این مقاله فرض بر این است که اطلاعات در یک فایل اکسل به نام data.xlsx و در دو شیت جدا قرار دارد. حال دستور زیر را اجرا کنید:

innerjoin:
LOAD * FROM [data.xlsx] (ooxml, embedded labels, table is Table1);
inner join LOAD * FROM [data.xlsx] (ooxml, embedded labels, table is Table2);

فایل را ذخیره و لود نمایید و سپس جدولی بسازید شامل همه فیلدها، فقط رکوردهایی نمایش داده می‌شود که مقدار فیلد A مشترک داشتند.(شکل 1) اگر این دستور به شکل زیر تغییر کند:

innerkeep1: LOAD A as Aik,B as Bik FROM [data.xlsx] (ooxml, embedded labels, table is Table1);
innerkeep2: inner keep LOAD A as Aik,C as Cik FROM [data.xlsx] (ooxml, embedded labels, table is Table2);

اگر فایل را لود کنید دو جدول خواهیم داشت که مقدار هر جدول دارای داده مخصوص خود است اما با مقدار مشترک فیلد A.(شکل 1)

برای الحاق از نوع LEFT این دستورات به صورت زیر تغییر می‌کنند.
leftjoin:
LOAD A as Alj,B as Blj FROM [data.xlsx] (ooxml, embedded labels, table is Table1);
left join LOAD A as Alj,C as Clj FROM [data.xlsx] (ooxml, embedded labels, table is Table2);
leftkeep1: LOAD A as Alk,B as Blk FROM [data.xlsx] (ooxml, embedded labels, table is Table1);
leftkeep2: left keep LOAD A as Alk,C as Clk FROM [data.xlsx] (ooxml, embedded labels, table is Table2);
شکل شماره 2 نمایش فایل‌های درست شده توسط این دستورات است، و برای الحاق از راست Right دستورات به صورت زیر خواهد بود:
rightjoin:
LOAD A as Arj,B as Brj FROM [data.xlsx] (ooxml, embedded labels, table is Table1);
right join LOAD A as Arj,C as Crj FROM [data.xlsx] (ooxml, embedded labels, table is Table2);
rightkeep1:LOAD A as Ark,B as Brk FROM [data.xlsx] (ooxml, embedded labels, table is Table1);
rightkeep2:right keep LOAD A as Ark,C as Crk FROM [data.xlsx] (ooxml, embedded labels, table is Table2);

شکل شماره 3 نحوه الحاق از راست را نمایش می‌دهد. و برای الحاق Outer دستورات چنین می‌شود:(شکل 4)

outerjoin:
LOAD A as Aoj,B as Boj FROM [data.xlsx] (ooxml, embedded labels, table is Table1);
outer join LOAD A as Aoj,C as Coj FROM [data.xlsx] (ooxml, embedded labels, table is Table2);

و شکل 5 نمایش داده‌های اصلی است.

در فایل پیوست در زیر سه روش بارگذاری داده نمایش داده شده، در این فایل در خط:

LET ReloadMode = 'excel';

اگر می‌خواهید داده‌ها از دیتابیس خوانده شود مقدار ReloadMode را به sql تغییر دهید و اگر می‌خواهید داده‌ها inline باشد مقدار را به inline تغییر دهید.


فایلهای مطلب

کپی
لینک اشتراک گذاری

  • 438
  • 0