PDA

نسخه کامل مشاهده نسخه کامل : تفاوت join و from



iranch
19-12-2012, 15:11
سلام
بین عملکرد join & from چیست؟
نتیجه یکی هست اما عملکردشون چه فرقی داره؟

tabriz-info
19-12-2012, 23:04
مطمئنی سوالت رو اشتباه ننوشتی؟

Inner Join : در این روش سطرهایی نمایش داده می شوند که در هر دو جدولی که با هم Join شده اند وجود دارند. فرض کنید که دو جدول به نام titles و publishers داریم و می خواهیم برای هر title ، publisher آنرا تعیین کنیم. در اینصورت از Inner Join بصورت زیر استفاده می کنیم :

SELECT title, pub_name
FROM titles INNER JOIN
publishers ON titles.pub_id = publishers.pub_id

در اینصورت title هایی که publisher ندارند یا publisher هایی که title ندارند هیچ کدام در خروجی نمی آیند.

Outer Join : در این روش سطرهایی از جدول اصلی که سطر متناظرشان در جدول دیگر وجود ندارد هم در خروجی می آیند. بسته به اینکه بخواهیم کدامیک از سطرهایی که در جدول دیگر متناظر ندارند هم در خروجی بیایند، سه نوع Outer Join بصورت زیر تعریف می شود :

1- Left Outer Join : تمام سطرهای جدول اولی (جدولی که در سمت چپ Join قرار گرفته است) در خروجی ظاهر می شوند. ولی سطرهایی از جدول دوم که متناظری در جدول اول ندارند در خروجی نمی آیند. بعنوان مثال دستور زیر تمام title ها ، حتی آنهایی که publisher ندارند، را در خروجی نشان می دهد :

SELECT titles.title_id, titles.title, publishers.pub_name
FROM titles LEFT OUTER JOIN publishers
ON titles.pub_id = publishers.pub_id

2- Right Outer Join : تمام سطرهای جدول دومی (جدولی که در سمت راست Join قرار گرفته است) در خروجی ظاهر می شوند. بعنوان مثال دستور زیر تمام publisher ها را نشان می دهد حتی آنهایی که title ندارند هم در خروجی نمایش داده می شوند:

SELECT titles.title_id, titles.title, publishers.pub_name
FROM titles RIGHT OUTER JOIN publishers
ON titles.pub_id = publishers.pub_id

3- Full Outer Join : تمام سطرهای هر دو جدول در خروجی می آیند چه در جدول دیگر متناظر داشته باشند چه نداشته باشند. به عنوان مثال دستور زیر تمام title ها و تمام publisher ها را نشان می دهد:

SELECT titles.title_id, titles.title, publishers.pub_name
FROM titles FULL OUTER JOIN publishers
ON titles.pub_id = publishers.pub_id

Cross Join : نتیجه این Join تمام ترکیباتی است که از قرار گرفتن هر سطر از جدول اولی در کنار تمام سطرهای جدول دومی بدست می آید(همانند حاصلضرب دکارتی). بعنوان مثال authors Cross Join Publisher مجموعه تمام حالتهای ممکن author/publisher را در خروجی تولید می کند :

SELECT * FROM authors CROSS JOIN publishers

iranch
20-12-2012, 21:04
سلام
بله سوال درسهت
ما یک جا میگیم from s,j
از جدول s و j
و یک جا میگیم که s join j
که پاسخ یکی هست در هر دو مورد

neopersia
21-12-2012, 16:08
سلام
کاربردش در بعضی جاها یک نتیجه رو میده اما تا جایی که من میدونم از نظر کارایی join نسبت به select|update|delete from بر روی چند جدول سریعتر عمل میکنه.
روش درست و استانداردش استفاده از join هست.