متفرقه برنامه نویسی مقالات تخصصی فن آوری اطلاعات

☾♔TALAYEH_A♔☽

کاربر نگاه دانلود
کاربر نگاه دانلود
عضویت
2017/05/18
ارسالی ها
35,488
امتیاز واکنش
104,218
امتیاز
1,376
بسم الله.png

{{ مقالات تخصصی و آموزشی فن آوری اطلاعات (ICT) }}


ارسال هرگونه پستی ممنوع می باشد.
 
  • پیشنهادات
  • ☾♔TALAYEH_A♔☽

    کاربر نگاه دانلود
    کاربر نگاه دانلود
    عضویت
    2017/05/18
    ارسالی ها
    35,488
    امتیاز واکنش
    104,218
    امتیاز
    1,376
    آموزش INSERT INTO SELECT
    در SQL می توان اطلاعات را از یک جدول به جدول دیگر کپی کرد.

    عبارت INSERT INTO SELECT داده ها را از یک جدول کپی کرده و در جدول دیگری وارد می نماید. سطر های جدول مقصد در این پروسه بدون هیچگونه تغییر باقی می ماند.

    فرم عبارت INSERT INTO SELECT
    با استفاده ازعبارت زیر می توانیم تمام ستون ها را از یک جدول به جدول دیگری کپی کنیم:


    1
    2
    3
    INSERT INTO table2

    SELECT * FROM table1;
    یا می توانیم با استفاده از عبارت زیر تنها ستون های مورد نظر خود را در جدول دیگری کپی کنیم:


    1
    2
    3
    4
    5
    6
    7
    INSERT INTO table2

    (column_name(s))

    SELECT column_name(s)

    FROM table1;
    نحوه استفاده از عبارت INSERT INTO SELECT در پایگاه داده

    در این آموزش از نمونه پایگاه داده مشهور Northwind استفاده خواهیم کرد.

    جدول زیر از میان جدول "Customers" انتخاب شده است:

    image.axd

    آنچه در زیر می بینید گزیده ای است از جدول "Suppliers":

    image.axd

    مثال استفاده از عبارت INSERT INTO SELECT

    عبارت زیر تنها تعدادی کمی از ستون ها را از جدول Suppliers به جدول Customers کپی می کند:


    1
    2
    3
    INSERT INTO Customers (CustomerName, Country)

    SELECT SupplierName, Country FROM Suppliers;
    عبارت زیر تنها عرضه کنندگان آلمانی را از جدول Suppliers به جدول Customers کپی می کند:


    1
    2
    3
    4
    5
    INSERT INTO Customers (CustomerName, Country)

    SELECT SupplierName, Country FROM Suppliers

    WHERE Country='Germany';
     

    ☾♔TALAYEH_A♔☽

    کاربر نگاه دانلود
    کاربر نگاه دانلود
    عضویت
    2017/05/18
    ارسالی ها
    35,488
    امتیاز واکنش
    104,218
    امتیاز
    1,376
    آموزش دستور GROUP BY در SQL
    SQL

    توابع Aggregate غالباً با عبارت GROUP BY همراه می شوند.

    عبارت GROUP BY
    عبارت GROUP BY در ترکیب با توابع aggregate استفاده می شود تا نتیجه را بر اساس یک یا چند ستون گروه بندی کند.

    فرم دستور GROUP BY

    1
    2
    3
    4
    SELECT column_name, aggregate_function(column_name)
    FROM table_name
    WHERE column_name operator value
    GROUP BY column_name;
    نمونه استفاده از GROUP BY در پایگاه داده
    در این آموزش از نمونه پایگاه داده مشهور Northwind استفاده خواهیم کرد.

    جدول زیر از میان جدول "Orders" انتخاب شده است:

    OrderID
    CustomerID
    EmployeeID
    OrderDate
    ShipperID
    10248
    90
    5
    1996-07-04
    3
    10249
    81
    6
    1996-07-05
    1
    10250
    34
    4
    1996-07-08
    2


    و جدول زیر از میان جدول "Shippers" انتخاب شده است:



    ShipperID
    ShipperName
    Phone
    1
    Speedy Express
    (503) 555-9831
    2
    United Package
    (503) 555-3199
    3
    Federal Shipping
    (503) 555-9931


    و جدول زیر از میان جدول "Employees" انتخاب شده است:



    EmployeeID
    LastName
    FirstName
    BirthDate
    Photo
    Notes
    1
    Davolio
    Nancy
    1968-12-08
    EmpID1.pic
    Education includes a BA....
    2
    Fuller
    Andrew
    1952-02-19
    EmpID2.pic
    Andrew received his BTS....
    3
    Leverling
    Janet
    1963-08-30
    EmpID3.pic
    Janet has a BS degree....
    مثال

    اکنون می خواهیم تعداد سفارشاتی را که توسط هر یک از شرکت های باربری فرستاده شده است را پیدا کنیم.

    عبارت SQL زیر تعداد سفارشات را بر اساس گروه بندی شرکت های باربری می شمارد:


    1
    2
    3
    4
    SELECT Shippers.ShipperName,COUNT(Orders.OrderID) AS NumberOfOrders FROM Orders
    LEFT JOIN Shippers
    ON Orders.ShipperID=Shippers.ShipperID
    GROUP BY ShipperName;
    GROUP BY برای بیش از یک ستون
    می توانیم عبارت GROUP BY را برای بیش از یک ستون استفاده کنیم، مانند زیر:


    1
    2
    3
    4
    5
    6
    7
    8
    SELECT Shippers.ShipperName, Employees.LastName,
    COUNT(Orders.OrderID) AS NumberOfOrders
    FROM ((Orders
    INNER JOIN Shippers
    ON Orders.ShipperID=Shippers.ShipperID)
    INNER JOIN Employees
    ON Orders.EmployeeID=Employees.EmployeeID)
    GROUP BY ShipperName,LastName;
     

    ☾♔TALAYEH_A♔☽

    کاربر نگاه دانلود
    کاربر نگاه دانلود
    عضویت
    2017/05/18
    ارسالی ها
    35,488
    امتیاز واکنش
    104,218
    امتیاز
    1,376
    در این فصل می خواهیم عملگرهای IS NULL و IS NOT NULL را توضیح دهیم:

    مقادیر NULL در SQL
    مقادیر NULL نشانگر داده های ناشناخته و گم شده است.

    به طور پیش فرض، یک ستون از جدول می تواند مقدار NULL را در خود نگه دارد.

    اگر ستونی در یک جدول اختیاری است، می توانیم رکورد جدیدی را در جدول وارد کرده و یا رکورد قبلی آنرا بروز رسانی کنیم بدون اینکه بخواهیم به ستون مذکور مقداری اضافه کنیم. این بدین معنی است که فبلد فوق با مقدار NULL ذخیره خواهد شد.

    با مقدار NULL نسبت به مقادیر دیگر، رفتار متفاوتی می شود.

    در فیلدهای نامشخص یا نامعلوم از مقدار NULL جهت پر کردن جای خالی استفاده می شود.

    نکته:
    NULL و صفر را نمی توان با هم یکی دانست، این دو معادل یکدیگر نیستند.

    استفاده از مقدار NULL در SQL
    به جدول “Persons” در زیر نگاه کنید:

    P_Id
    LastName
    FirstName
    Address
    City
    1
    Hansen
    Ola

    Sandnes
    2
    Svendson
    Tove
    Borgvn 23
    Sandnes
    3
    Pettersen
    Kari

    Stavanger
    فرض کنید که ستون “Address” در جدول “Persons” اختیاری باشد. این بدان معناست که اگر رکوردی را بدون وارد کردن مقداری در ستون “Address” درج کنیم، ستون “Address” با مقدار NULL ذخیره خواهد شد.

    چگونه می توانیم تست کنیم فیلدی مقدار NULL دارد؟

    با عملگر های مقایسه ای مثل =، > و <> نمی توان مقدار NULL را تست کرد.

    بلکه باید از عملگرهای IS NULL و IS NOT NULL استفاده کنیم.

    IS NULL در SQL
    چگونه می توان تنها رکوردهایی را که در ستون “Address” مقدار NULL دارند انتخاب کرد؟

    باید از عملگر IS NULL برای این کار استفاده کنیم:


    1
    2
    SELECT LastName,FirstName,Address FROM Persons
    WHERE Address IS NULL
    نتیجه چنین خواهد شد :

    LastName
    FirstName
    Address
    Hansen
    Ola

    Pettersen
    Kari

    نکته:
    همیشه از IS NULL برای مشاهده فیلدهای حاوی مقدار NULL استفاده کنید.

    IS NOT NULL
    چگونه رکوردهایی را که مقدارشان NULL نیست را از ستون “Address” انتخاب می کنیم؟

    باید از عملگر IS NOT NULL استفاده کنیم:


    1
    2
    SELECT LastName,FirstName,Address FROM Persons
    WHERE Address IS NOT NULL
    نتیجه چنین خواهد شد:

    LastName
    FirstName
    Address
    Svendson
    Tove
    Borgvn 23
    در فصل بعد به توابع ISNULL, NVL(), IFNULL() و COALESCE() نظری خواهیم داشت.
     

    ☾♔TALAYEH_A♔☽

    کاربر نگاه دانلود
    کاربر نگاه دانلود
    عضویت
    2017/05/18
    ارسالی ها
    35,488
    امتیاز واکنش
    104,218
    امتیاز
    1,376
    آموزش UNION
    ملگر UNION نتیجه دو یا چند دستور SELECT را با یکدیگر ترکیب می کند.

    عملگر UNION برای ترکیب نتایج دو یا چند دستور SELECT استفاده می شود.

    توجه داشته باشید که هر دستور SELECT در عملگر UNION باید تعداد ستونهای یکسانی را برگردانند. همچنین ستونها باید Data Type یکسانی داشته باشند. علاوه بر این ستونها در هر دستور SELECT باید به یک صورت مرتب شده باشند.

    فرم عملگر UNION


    1
    SELECT column_name(s) FROM table1
    UNION

    1
    SELECT column_name(s) FROM table2;
    نکته:
    عملگر UNION تنها داده هایی را به صورت پیش فرض انتخاب می کند که از یکدیگر متمایز باشند. برای اینکه داده های تکراری را هم بیاوریم از کلید واژه ALL به همراه UNION استفاده کنید.

    فرم عملگر UNION ALL


    1
    SELECT column_name(s) FROM table1
    UNION ALL

    1
    SELECT column_name(s) FROM table2;
    نکته: نام ستون ها در جدول نتایج معمولا برابر نام ستونها در دستور SELECT اول در عملگر UNION می باشد.

    نحوه استفاده از کلید واژه UNION در پایگاه داده

    در این آموزش از نمونه پایگاه داده مشهور Northwind استفاده خواهیم کرد.

    جدول زیر از میان جدول "Customers" انتخاب شده است:

    image.axd

    آنچه در زیر می بینید گزیده ای است از جدول "Suppliers":

    image.axd

    مثال استفاده از کلید واژه UNION

    عبارت SQL زیر نام تمام شهر های مختلف را (تنها از بین مقادیر مشخص) از ستون "City" و از میان جداول Customers و Suppliers انتخاب می کند:


    1
    SELECT City FROM Customers

    1
    SELECT City FROM Suppliers

    1
    ORDER BY City;
    نکته:
    عملگر UNION نمی تواند برای لیست کردن تمام شهر های دو جدول مورد استفاده قرار گیرد. اگر تعدادی از مشتریان و عرضه کنندگانAnchor دارای نام شهر یکسانی باشند، نام آن شهر تنها یکبار در لیست قرار

    می گیرد. UNION تنها مقادیر غیر تکراری را انتخاب می کند. برای انتخاب مقادیر تکراری از UNION ALL استفاده کنید.

    مثال استفاده از عملگر UNION ALL
    عبارت SQL زیر از عملگر UNION ALL برای انتخاب تمام (حتی مقادیر تکراری) شهر ها از جداول Customers و Suppliers استفاده می کند:


    1
    2
    3
    4
    5
    6
    7
    SELECT City FROM Customers

    UNION ALL

    SELECT City FROM Suppliers

    ORDER BY City;
    مثال استفاده از عملگر UNION ALL همراه با دستور WHERE

    عبارت SQL زیر از عملگر UNION ALL برای انتخاب تمام (حتی مقادیر تکراری) شهر های آلمانAnchor از جداول

    Customers و Suppliers استفاده می کند:


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SELECT City, Country FROM Customers

    WHERE Country='Germany'

    UNION ALL

    SELECT City, Country FROM Suppliers

    WHERE Country='Germany'

    ORDER BY City;
     

    ☾♔TALAYEH_A♔☽

    کاربر نگاه دانلود
    کاربر نگاه دانلود
    عضویت
    2017/05/18
    ارسالی ها
    35,488
    امتیاز واکنش
    104,218
    امتیاز
    1,376
    آموزش FULL OUTER JOIN
    کلید واژه FULL OUTER JOIN تمام ردیف های جدول سمت چپ (table1) و سمت راست (table2) را فرا می خواند.

    کلید واژه FULL OUTER JOIN نتایج بدست آمده از پیوند های چپ و راستAnchor را با یکدیگر ترکیب می کند.

    فرم کلید واژه FULL OUTER JOIN

    1
    2
    3
    4
    5
    6
    7
    SELECT column_name(s)

    FROM table1

    FULL OUTER JOIN table2

    ON table1.column_name=table2.column_name;
    image.axd

    نحوه استفاده از کلید واژه FULL OUTER JOIN در پایگاه داده

    در این آموزش از نمونه پایگاه داده مشهور Northwind استفاده خواهیم کرد.

    جدول زیر از میان جدول "Customers" انتخاب شده است:

    image.axd

    آنچه در زیر می بینید گزیده ای است از جدول "Orders":

    مثال استفاده از کلید واژه FULL OUTER JOIN

    عبارت SQL زیر تمام مشتریان و سفارشاتشان را انتخاب می کند:


    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT Customers.CustomerName, Orders.OrderID

    FROM Customers

    FULL OUTER JOIN Orders

    ON Customers.CustomerID=Orders.CustomerID

    ORDER BY Customers.CustomerName;
    نتیجه بدست آمده از عبارت بالاAnchor به شکل زیر می باشد:

    image.axd

    نکته:
    کلید واژه FULL OUTER JOIN تمام سطرهای جدول سمت چپ (Customers) و تمام سطرهای موجود در جدول سمت راست (Orders) را بر می گرداند. اگر سطری در جدول Customers وجود دارد که تناظری در جدول Orders ندارد یا اگر سطری در جدول Orders وجود دارد که تناظری در جدول Customers ندارد با این وجود این سطرها نیز در جدول نتیجه نمایش داده خواهند شد.
     

    ☾♔TALAYEH_A♔☽

    کاربر نگاه دانلود
    کاربر نگاه دانلود
    عضویت
    2017/05/18
    ارسالی ها
    35,488
    امتیاز واکنش
    104,218
    امتیاز
    1,376
    آموزش RIGHT JOIN
    کلید واژه RIGHT JOIN تمام سطر های جدول سمت راست (table2) و آندسته از سطر های جدول سمت چپ (table1) را که با جدول سمت راست متناظر است فرا می خواند. اگر در جدول سمت چپ سطر متناظری وجود نداشته باشد نتیجه در سمت چپ صفرAnchor خواهد بود.

    فرم کلید واژه RIGHT JOIN

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    SELECT column_name(s)

    FROM table1

    RIGHT JOIN table2

    ON table1.column_name=table2.column_name;


    یا:


    SELECT column_name(s)

    FROM table1

    RIGHT OUTER JOIN table2

    ON table1.column_name=table2.column_name;
    نکته:
    در برخی از پایگاه های داده RIGHT JOIN به نام RIGHT OUTER JOIN نیز نامیده می شود.

    image.axd

    نحوه استفاده از کلید واژه RIGHT JOIN در پایگاه داده
    در این آموزش از نمونه پایگاه داده مشهور Northwind استفاده خواهیم کرد.

    جدول زیر از میان جدول "Orders" انتخاب شده است:

    image.axd

    آنچه در زیر می بینید گزیده ای است از جدول "EmployeesAnchor":

    image.axd

    مثال استفاده از کلید واژه RIGHT JOIN
    عبارت SQL زیر لیست تمام کارمندان و سفارشات آنها را فرا می خواند:


    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT Orders.OrderID, Employees.FirstName

    FROM Orders

    RIGHT JOIN Employees

    ON Orders.EmployeeID=Employees.EmployeeID

    ORDER BY Orders.OrderID;
    نکته:
    کلید واژه RIGHT JOIN تمام سطرهای جدول سمت راست (Employees) را برمی گرداند حتی اگر هیچ داده متناظری برای آن در جدول سمت چپ (Orders) وجود نداشته باشد.
     

    ☾♔TALAYEH_A♔☽

    کاربر نگاه دانلود
    کاربر نگاه دانلود
    عضویت
    2017/05/18
    ارسالی ها
    35,488
    امتیاز واکنش
    104,218
    امتیاز
    1,376
    آموزش LEFT JOIN
    کلید واژه LEFT JOIN تمام سطر های جدول سمت چپ (table1) و آندسته از سطر های جدول سمت راست (table2) را که با جدول سمت چپ متناظر است فرا می خواند. اگر در جدول سمت راست سطر متناظری وجود نداشته باشد نتیجه در سمت راست صفرAnchor خواهد بود.

    فرم کلید واژه LEFT JOIN

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    SELECT column_name(s)

    FROM table1

    LEFT JOIN table2

    ON table1.column_name=table2.column_name;


    یا:

    SELECT column_name(s)

    FROM table1

    LEFT OUTER JOIN table2

    ON table1.column_name=table2.column_name;
    نکته:
    در برخی از پایگاه های داده LEFT JOIN به نام LEFT OUTER JOIN نیز نامیده می شود.

    image.axd


    نحوه استفاده از کلید واژه LEFT JOIN در پایگاه داده در این آموزش از نمونه پایگاه داده مشهور Northwind استفاده خواهیم کرد. جدول زیر از میان جدول "Customers" انتخاب شده است:

    image.axd


    آنچه در زیر می بینید گزیده ای است از جدول "Orders":

    image.axd


    مثال استفاده از کلید واژه LEFT JOIN

    عبارت SQL زیر تمام مشتریان و سفارشاتشان را لیست می کند:


    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT Customers.CustomerName, Orders.OrderID

    FROM Customers

    LEFT JOIN Orders

    ON Customers.CustomerID=Orders.CustomerID

    ORDER BY Customers.CustomerName;
    نکته:
    کلید واژه LEFT JOIN تمام سطرهای جدول سمت چپ (Customers) را برمی گرداند حتی اگر هیچ داده متناظری برای آن در جدول سمت راست (Orders) وجود نداشته باشد.




    • آموزش INSERT INTO SELECT
    • آموزش دستور GROUP BY در SQL
    • مقادیر NULL در SQL
    • آموزش UNION
    • آموزش FULL OUTER JOIN
    • آموزش RIGHT JOIN
    • آموزش LEFT JOIN
    • آموزش INNER JOIN
    • آموزش join
    • آموزش عملگر IN
    • آموزش عملگر LIKE
    • آموزش Views در SQL
    • آموزش افزایش فیلدها در sql
    • آموزش دستور ALTER TABLE در SQL
    • آموزش دستور Create Index در SQL
    • آموزش دستور CREATE TABLE در SQL
    • آموزش دستور CREATE DATABASE
    • آموزش Aliases
    • آموزش دستورزبان SQL
    • آموزش مجازی سازی سرور
    • ICT چیست؟
    • سیگنال همراه با حل المسائل
    • Numerical Analysis(محاسبات عددی)
    • رمزنگاری نامقارن
    • آموزش نرم افزار متلب
    • Html & Css
    • Network+
    • دستور BETWEEN در شرط Where زبان SQL
    • تزریق(Injection)
    • شرط TOP در دستور SELECT اس کیو ال
    • شرط OFFSET-FETCH در دستور SQL ORDER BY
    • دستور SELECT MIN, MAX در SQL
    • دستور SELECT COUNT, SUM, AVG در SQL
     

    ☾♔TALAYEH_A♔☽

    کاربر نگاه دانلود
    کاربر نگاه دانلود
    عضویت
    2017/05/18
    ارسالی ها
    35,488
    امتیاز واکنش
    104,218
    امتیاز
    1,376
    آموزش INNER JOIN
    کلید واژه INNER JOIN سطرهایی از هر دو جدول را انتخاب می کند که حداقل یک داده متناظر در ستون های مرتبط با هم داشته باشد.

    فرم عبارت INNER JOIN


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    SELECT column_name(s)

    FROM table1

    INNER JOIN table2

    ON table1.column_name=table2.column_name;


    یا:

    SELECT column_name(s)

    FROM table1

    JOIN table2

    ON table1.column_name=table2.column_name;
    نکته:
    تفاوتی بین JOIN و INNER JOIN وجود ندارد یا به عبارت دیگر INNER JOIN همان JOIN است.

    image.axd

    نحوه استفاده از کلید واژه INNER JOIN در پایگاه داده

    در این آموزش از نمونه پایگاه داده مشهور Northwind استفاده خواهیم کرد.

    جدول زیر از میان جدول "Customers" انتخاب شده است:

    image.axd

    جدول زیر نیز گزیده ای از جدول "Orders" می باشد:

    image.axd

    مثال استفاده از کلید واژه INNER JOIN

    عبارت SQL زیر تمام مشتریان را همراه با شماره سفارشاتشان لیست می کند:


    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT Customers.CustomerName, Orders.OrderID

    FROM Customers

    INNER JOIN Orders

    ON Customers.CustomerID=Orders.CustomerID

    ORDER BY Customers.CustomerName;
    نکته: عبارت کلیدی INNER JOIN سطرهایی که حداقل یک تناظر در دو جدول داشته باشند را برمی گرداند. اگر سطری در جدول Customers وجود دارد که تناظری با جدول Orders ندارد، آن سطر لیست نمی شود.
     

    ☾♔TALAYEH_A♔☽

    کاربر نگاه دانلود
    کاربر نگاه دانلود
    عضویت
    2017/05/18
    ارسالی ها
    35,488
    امتیاز واکنش
    104,218
    امتیاز
    1,376
    آموزش join
    کلید واژه Join برای ترکیب سطر های دو یا چند جدول به کار می رود.

    رایج ترین نوع Join –Inner join (پیوند داخلی) است که تمام سطر هایی از جدول های گوناگون را که

    از شرط Join پیروی می کنند فرا می خواند.

    بیایید نگاهی به گزیده ای از جدول "Orders"( سفارشات) در پایین بیاندازیم.

    image.axd


    حالا نگاهی به گزیده ای از جدول "Customers" در زیر بیاندازید:

    image.axd


    دقت داشته باشید که ستون "Customers ID" در جدول "Orders" به ستون "Customers ID" در جدول "Customers" اشاره دارد. رابـ ـطه بین دو جدول بالا ستون "Customer ID" می باشد.

    بنابراین اگر ما عبارت SQL زیر را که شامل (INNER JOIN) می باشد اجرا کنیم.


    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT Orders.OrderID, Customers.CompanyName

    , Orders.OrderDate

    FROM Orders

    INNER JOIN Customers

    ON Orders.CustomerID=Customers.CustomerID;
    نتیجه ای مثل آنچه در زیر می بینید خواهد داشت.

    انواع مختلف پیوند های SQL
    قبل از اینکه مثال ها را ادامه دهیم انواع پیوندهایی که می توان از آنها استفاده کرد را به همراه تفاوت های آن ها بیان می کنیم.

    سطرهایی را که در هر دو جدول تناظر دارند را بر می گرداند INNER JOIN

    تمامی سطرها را از جدول سمت چپ و همچنین سطر هایی را از جدول سمت راست LEFT JOIN

    که با جدول سمت چپ متناظر هستند را فرا می خواند

    تمام سطر ها را از جدول سمت راست و همچنین سطرهایی را از جدول سمت چپ RIGHT JOIN

    که با جدول سمت راست متناظر هستند را فرا می خواند

    تمام ردیف های موجود در جداول را با وجود حتی یک همخوانی میان جداول فرا می خواند FULL JOIN
     
    بالا