PDA

View Full Version : INNER JOIN , LEFT JOIN , RIGHT JOIN



Helen_Farhani
دوشنبه 12 شهریور 1386, 16:08 عصر
تفاوت INNER JOIN , LEFT JOIN , RIGHT JOIN در چی هست؟ من متوجه کارایی و تفاوت اینها نمیشوم.

ممنون

Mohammad_Mnt
دوشنبه 12 شهریور 1386, 19:30 عصر
فرض کن یه Table داری واسه فاکتور به اسم tFactor که سریال و تاریخ فاکتور را توش ذخیره می کنی و یه Table دیگه داری واسه ردیف های فاکتور به اسم tItems که سریال، شماره ردیف، توضیح و مبلغ را توش ذخیره می کنی.
حالا Inner Join می تونه اطلاعات هر ردیف + اطلاعات فاکتوری که این ردیف را شامل می شه را بر گردونه به شرطی که رکورد مشترک توی هر دوتا تیبل باشه :

SELECT TITEMS.*, TFACTOR.*
FROM TITEMS
INNER JOIN TFACTOR ON
TFACTOR.SERIAL = TITEMS.SERIAL

بعدی: Left Join
مثل Inner Join عمل می کنه با این تفاوت که بدون توجه به وجود رکورد مشترک در هر دو تیبل، تمام رکوردهای مشترک جدول سمت چپ ( رنگ قرمز ) را بر می گردونه و اگر رکورد متناظری در جدول سمت راست وجود نداشته باشه، برای هر ستون مقدار Null را بر می گردونه :

SELECT TITEMS.*, TFACTOR.*
FROM TITEMS
LEFT JOIN TFACTOR ON
TFACTOR.SERIAL = TITEMS.SERIAL

بعدی : Right Join
دقیقا" برعکس Left Join عمل می کنه

JavanSoft
دوشنبه 12 شهریور 1386, 20:22 عصر
توضیحات خوب بود . ساده اش هم این میشه که
innerبه ازای هر رکورد در جدول اول حداقل باید یک رکورد در جدول دوم وجود داشته باشه
Left همه رکورد های جدول سمت چپ و اگر بود هم رکورد معادل از جدول سمت راست
Right همه رکورد های جدول سمت راست و اگر بود هم رکورد معادل از جدول سمت چپ

Helen_Farhani
دوشنبه 12 شهریور 1386, 23:37 عصر
پس میشه گفت که query زیر یک Inner Joun هست؟


SELECT TITEMS.*, TFACTOR.*
FROM TITEMS, TFACTOR
WHERE TFACTOR.SERIAL = TITEMS.SERIAL


در مورد LEFT و Right
خوب این چه کاری هست؟ چه تفاوتی با هم میکنند ( در کارایی دارند )؟

و اصلا وقتی میتونیم از Inner Join استفاده کنیم چه نیازی به Left Ritgh پیدا میکنیم؟

ممنون از وقتی که گذاشتید

SYNDROME
سه شنبه 13 شهریور 1386, 18:37 عصر
با سلام


و اصلا وقتی میتونیم از Inner Join استفاده کنیم چه نیازی به Left Ritgh پیدا میکنیم؟

دقت کنید.


Select *
From Tbl_Test1 T1
Left Outer Join Tbl_Test2 T2
ON T1.No = T2.No



جدول Tbl_Test1
No Name
1 ali
2 mamad
جدول Tbl_Test2
1 ali
3 k

اگر در دستور بالا Inner Join استفاده کنید کلیه رکوردهایی را نمایش می دهد که در دو جدول وجود داشت باشد.
ali 1
ولی اگر left LOuter Join : کلیه رکوردهایی که در جدول Tbl_Test1 وجود دارد.
ali 1
mamd 2
و اگر Right Outer Jolin: کلیه رکوردهایی که در جدول Tbl_Test2 وجود دارد.
ali 1
k 3
موفق باشید

Helen_Farhani
سه شنبه 13 شهریور 1386, 23:40 عصر
و اگر جدول سوم و یا چهارمی وجود داشته باشه چی؟

JavanSoft
چهارشنبه 28 شهریور 1386, 19:14 عصر
می توانید مجموعه Join شده را یک واحد فرض و مجددا join را انجام دهید

SYNDROME
چهارشنبه 28 شهریور 1386, 21:26 عصر
با سلام

و اگر جدول سوم و یا چهارمی وجود داشته باشه چی؟
می توانید دستورات زیر را به تعداد مورد نیاز و با جداول مورد نظر تکرار کنید.


Left Outer Join Tbl_Test2 T2
ON T1.No = T2.No

موفق باشید

aghamolki
یک شنبه 16 تیر 1387, 19:30 عصر
سلام
آیا میشه بیش از 2 جدول رو با استفاده ازINNER JOIN به هم متصل کرد.
اگه میشه لطف کنید دستورش رو بزارین(مثلا برای 3 جدول)
با تشکر