پیوستن
در بعضی موارد، پیوستن مثل این است چسباندن به این صورت که ستون هایی را به فایل اضافه می کند، اما از روشی منحصر به فرد برای انجام آن استفاده می کند. آ پیوستن عملیاتی است که معمولاً با پایگاه داده های ارتباطی که در آن داده ها از چند جداول با یک فیلد کلید مشترک ترکیب می شود تا نتیجه دلخواه را تشکیل دهد.
La پیوستن برنامه همان عملیات را انجام می دهد. داده ها را از چندین فایل بر اساس یک فیلد کلید مشترک به هم می پیوندد.
برای مشاهده نحوه استفاده از عملیات join در یک پایگاه داده رابطه ای، بیایید یک پایگاه داده بسیار کوچک متشکل از دو جدول را تصور کنیم که هر یک حاوی یک رکورد واحد است. جدول اول که CUSTOMERS نام دارد، دارای سه قسمت است: شماره مشتری (CUSTNUM)، نام مشتری (FNAME) و نام خانوادگی مشتری (LNAME):
CUSTNUM | نام | LNAME |
======== | ===== | ====== |
4681934 | جان | زرگر |
جدول دوم ORDERS نام دارد و شامل چهار قسمت است: شماره سفارش (ORDER-NUM)، شماره مشتری (CUSTNUM)، مقدار (QUAN) و کالای سفارش داده شده (ITEM).
ORDERNUM | CUSTNUM | ماندارین | ITEM |
======== | ======= | ==== | ==== |
3014953305 | 4681934 | 1 | ویجت آبی |
توجه داشته باشید که هر دو جدول فیلد CUSTNUM را به اشتراک می گذارند. این مهم است، زیرا اجازه می دهد تا یک رابطه بین جداول برقرار شود.
انجام عملیات اتصال به ما این امکان را می دهد که فیلدهای دو جدول را با هم ترکیب کنیم تا به نتیجه مفیدی مانند تهیه فاکتور دست یابیم. با استفاده از مقادیر تطبیق در فیلدهای CUSTNUM هر دو جدول، یک عملیات Join می تواند موارد زیر را ایجاد کند:
نام | LNAME | ماندارین | ITEM |
===== | ===== | ==== | ==== |
جان | زرگر | 1 | ویجت آبی |
برای نشان دادن پیوستن برنامه، ما باید چند فایل با یک کلید مشترک بسازیم. برای انجام این کار، ما از ما استفاده خواهیم کرد distros-by-date.txt فایل. از این فایل، دو فایل اضافی می سازیم، یکی حاوی تاریخ های انتشار (که کلید مشترک ما برای این نمایش خواهد بود) و نام های انتشار:
[me@linuxbox ~]$ cut -f 1,1 distros-by-date.txt > distros-names.txt [me@linuxbox ~]$ چسباندن distros-dates.txt distros-names.txt > distros- key-names.txt
[me@linuxbox ~]$ سر distros-key-names.txt
11/25/2008 فدورا 10/30/2008 اوبونتو 06/19/2008 SUSE
05/13/2008 فدورا 04/24/2008 اوبونتو 11/08/2007 فدورا 10/18/2007 اوبونتو
[me@linuxbox ~]$ cut -f 1,1 distros-by-date.txt > distros-names.txt [me@linuxbox ~]$ چسباندن distros-dates.txt distros-names.txt > distros- key-names.txt
[me@linuxbox ~]$ سر distros-key-names.txt
11/25/2008 فدورا 10/30/2008 اوبونتو 06/19/2008 SUSE
05/13/2008 فدورا 04/24/2008 اوبونتو 11/08/2007 فدورا 10/18/2007 اوبونتو
10/04/2007 SUSE
05/31/2007 فدورا 04/19/2007 اوبونتو
10/04/2007 SUSE
05/31/2007 فدورا 04/19/2007 اوبونتو
و فایل دوم که حاوی تاریخ انتشار و شماره نسخه است:
[me@linuxbox ~]$ cut -f 2,2 distros-by-date.txt > distros-vernums.txt [me@linuxbox ~]$ چسباندن distros-dates.txt distros-vernums.txt > distro s-key-vernums.txt
[me@linuxbox | ~]$ سر distros-key-vernums.txt |
11/25/2008 | 10 |
10/30/2008 | 8.10 |
06/19/2008 | 11.0 |
05/13/2008 | 9 |
04/24/2008 | 8.04 |
11/08/2007 | 8 |
10/18/2007 | 7.10 |
10/04/2007 | 10.3 |
05/31/2007 | 7 |
04/19/2007 | 7.04 |
اکنون دو فایل با یک کلید مشترک داریم (فیلد "تاریخ انتشار"). ذکر این نکته ضروری است که فایل ها باید در قسمت کلید برای مرتب شوند پیوستن به درستی کار نکند.
[me@linuxbox ~]$ به distros-key-names.txt بپیوندید distros-key-vernums.txt | سر
11/25/2008 فدورا 10
10/30/2008 اوبونتو 8.10
06/19/2008 SUSE 11.0
05/13/2008 فدورا 9
04/24/2008 اوبونتو 8.04
11/08/2007 فدورا 8
10/18/2007 اوبونتو 7.10
10/04/2007 SUSE 10.3
05/31/2007 فدورا 7
04/19/2007 اوبونتو 7.04
[me@linuxbox ~]$ به distros-key-names.txt بپیوندید distros-key-vernums.txt | سر
11/25/2008 فدورا 10
10/30/2008 اوبونتو 8.10
06/19/2008 SUSE 11.0
05/13/2008 فدورا 9
04/24/2008 اوبونتو 8.04
11/08/2007 فدورا 8
10/18/2007 اوبونتو 7.10
10/04/2007 SUSE 10.3
05/31/2007 فدورا 7
04/19/2007 اوبونتو 7.04
همچنین توجه داشته باشید که به طور پیش فرض، پیوستن از فضای خالی به عنوان جداکننده فیلد ورودی و یک فضای منفرد به عنوان جداکننده فیلد خروجی استفاده می کند. این رفتار را می توان با تعیین گزینه ها اصلاح کرد. را ببینید پیوستن صفحه مرد برای جزئیات