View Full Version : INNER JOIN , LEFT JOIN , RIGHT JOIN
Helen_Farhani
دوشنبه 12 شهریور 1386, 17:08 عصر
تفاوت INNER JOIN , LEFT JOIN , RIGHT JOIN در چی هست؟ من متوجه کارایی و تفاوت اینها نمیشوم.
ممنون
Mohammad_Mnt
دوشنبه 12 شهریور 1386, 20: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, 21:22 عصر
توضیحات خوب بود . ساده اش هم این میشه که
innerبه ازای هر رکورد در جدول اول حداقل باید یک رکورد در جدول دوم وجود داشته باشه
Left همه رکورد های جدول سمت چپ و اگر بود هم رکورد معادل از جدول سمت راست
Right همه رکورد های جدول سمت راست و اگر بود هم رکورد معادل از جدول سمت چپ
Helen_Farhani
سه شنبه 13 شهریور 1386, 00:37 صبح
پس میشه گفت که query زیر یک Inner Joun هست؟
SELECT TITEMS.*, TFACTOR.*
FROM TITEMS, TFACTOR
WHERE TFACTOR.SERIAL = TITEMS.SERIAL
در مورد LEFT و Right
خوب این چه کاری هست؟ چه تفاوتی با هم میکنند ( در کارایی دارند )؟
و اصلا وقتی میتونیم از Inner Join استفاده کنیم چه نیازی به Left Ritgh پیدا میکنیم؟
ممنون از وقتی که گذاشتید
SYNDROME
سه شنبه 13 شهریور 1386, 19: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
چهارشنبه 14 شهریور 1386, 00:40 صبح
و اگر جدول سوم و یا چهارمی وجود داشته باشه چی؟
JavanSoft
چهارشنبه 28 شهریور 1386, 20:14 عصر
می توانید مجموعه Join شده را یک واحد فرض و مجددا join را انجام دهید
SYNDROME
چهارشنبه 28 شهریور 1386, 22:26 عصر
با سلام
و اگر جدول سوم و یا چهارمی وجود داشته باشه چی؟
می توانید دستورات زیر را به تعداد مورد نیاز و با جداول مورد نظر تکرار کنید.
Left Outer Join Tbl_Test2 T2
ON T1.No = T2.No
موفق باشید
aghamolki
یک شنبه 16 تیر 1387, 20:30 عصر
سلام
آیا میشه بیش از 2 جدول رو با استفاده ازINNER JOIN به هم متصل کرد.
اگه میشه لطف کنید دستورش رو بزارین(مثلا برای 3 جدول)
با تشکر
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.