با عرض سلام و وقت بخیر خدمت کاربران سایت پی وی لرن ، و کاربرانی که دوره آموزش SQLite را دنبال می کنند. عملگر UNION در SQLite برای ترکیب نتایج دو یا چند عبارت یا دستور SELECT بدون بازگرداندن هر سطر تکراری مورد استفاده قرار می گیرد. برای استفاده از عملگر UNION در SQLite ، هر دستور SELECT باید همان تعداد ستون را انتخاب کند، در واقع باید همان تعداد ستون و همان نوع داده مشخص شود. اما آنها لازم نیست که هر SELECT طول یکسان داشته باشد. برای آشنایی با چگونگی کار با عملگر UNION در SQLite در ادامه ی مباحث با ما همراه باشید.
در این آموزش شما را با سینتکس و مثال هایی از عملگر UNION در SQLite آشنا خواهیم کرد.
سینتکس اصلی عملگر UNION به صورت زیر است :
1 2 3 4 5 6 7 8 9 | SELECT column1 [, column2 ] FROM table1 [, table2 ] [WHERE condition] UNION SELECT column1 [, column2 ] FROM table1 [, table2 ] [WHERE condition] |
در ساختار فوق به جای condition می توانید هر عبراتی شرطی را بسته به نیاز خود تعریف کنید.
مثال
جدول COMPANY را به صورت زیر در نظر بگیرید :
1 2 3 4 5 6 7 8 9 10 | sqlite> select * from COMPANY; ID NAME AGE ADDRESS SALARY ---------- -------------------- ---------- ---------- ---------- 1 Paul 32 California 20000.0 2 Allen 25 Texas 15000.0 3 Teddy 23 Norway 20000.0 4 Mark 25 Rich-Mond 65000.0 5 David 27 Texas 85000.0 6 Kim 22 South-Hall 45000.0 7 James 24 Houston 10000.0 |
جدول DEPARTMENT را نیز به صورت زیر در نظر بگیرید :
1 2 3 4 5 6 7 8 9 | ID DEPT EMP_ID ---------- -------------------- ---------- 1 IT Billing 1 2 Engineering 2 3 Finance 7 4 Engineering 3 5 Finance 4 6 Engineering 5 7 Finance 6 |
حالا با استفاده از دستور SELECT و عملگر UNION دو جدول فوق را با هم مرتبط کرده و یک query از ترکیب هر دو جدول می نویسیم:
1 2 3 4 5 6 7 | sqlite> SELECT EMP_ID, NAME, DEPT FROM COMPANY INNER JOIN DEPARTMENT ON COMPANY.ID = DEPARTMENT.EMP_ID UNION SELECT EMP_ID, NAME, DEPT FROM COMPANY LEFT OUTER JOIN DEPARTMENT ON COMPANY.ID = DEPARTMENT.EMP_ID; |
نتیجه ی کد فوق به صورت زیر خواهد بود :
1 2 3 4 5 6 7 8 9 | EMP_ID NAME DEPT ---------- -------------------- ---------- 1 Paul IT Billing 2 Allen Engineering 3 Teddy Engineering 4 Mark Finance 5 David Engineering 6 Kim Finance 7 James Finance |
عملگر UNION ALL برای ترکیب نتایج دو SELECT که شامل رکوردهای تکراری باشند استفاده می شود.
همان قوانینی که برای UNION اعمال می شود به اپراتور UNION ALL نیز اعمال می شود.
سینتکس اصلی دستور UNION ALL به صورت زیر است :
1 2 3 4 5 6 7 8 9 | SELECT column1 [, column2 ] FROM table1 [, table2 ] [WHERE condition] UNION ALL SELECT column1 [, column2 ] FROM table1 [, table2 ] [WHERE condition] |
در ساختار فوق به جای condition می توانید هر عبراتی شرطی را بسته به نیاز خود تعریف کنید.
مثال
حالا دو جدول فوق را به صورت زیر در دستورات SELECT با هم ترکیب می کنیم :
1 2 3 4 5 6 7 | sqlite> SELECT EMP_ID, NAME, DEPT FROM COMPANY INNER JOIN DEPARTMENT ON COMPANY.ID = DEPARTMENT.EMP_ID UNION ALL SELECT EMP_ID, NAME, DEPT FROM COMPANY LEFT OUTER JOIN DEPARTMENT ON COMPANY.ID = DEPARTMENT.EMP_ID; |
نتیجه ی Query فوق به صورت زیر خواهد بود :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | EMP_ID NAME DEPT ---------- -------------------- ---------- 1 Paul IT Billing 2 Allen Engineering 3 Teddy Engineering 4 Mark Finance 5 David Engineering 6 Kim Finance 7 James Finance 1 Paul IT Billing 2 Allen Engineering 3 Teddy Engineering 4 Mark Finance 5 David Engineering 6 Kim Finance 7 James Finance |
گاهی ممکن است که نیاز داشته باشید در نتایج query با استفاده از دستورات SELECT ترکیبی از دو یا چند جدول را داشته باشید، برای اینگونه موارد می توانیم از عملگر UNION در SQLite به نحوی که در مباحث فوق به آن اشاره شد، استفاده کنیم.