PDA

View Full Version : مشکل با join نشدن



oliya24
شنبه 19 شهریور 1390, 18:29 عصر
سلام من 2 جدول دارم یکی به نام test1 و دیگری هم به نام test 2 هر کدوم 2 فیلد دارن یکی به نام id و یکی به نام name
در هر 2 جدول هم id کلید اصلی هست
من از inner join استفاده کردم و بدون هیچ مشکلی دستور اجرا شد ولی خروجی اون 2 فیلد بود که خالی بودن

ضمنا در هر 2 جدول هم من اطلاعات ذخیره کرده بودم
به نظر شما مشکل چیه
این هم دستوری که من نوشتم
select test1.name,test1.id from test1
inner join test2
on test1.id=test2.id

Galawij
یک شنبه 20 شهریور 1390, 17:56 عصر
چک کنید ببینید مقادیر دو کلید اصلی با هم برابر هستند؟

oliya24
یک شنبه 20 شهریور 1390, 18:07 عصر
نه مقادير يكي نيستند شايد يك يا 2 فيلد مثلا id يكيشون 2 باشه ولي اينكه همه يكي باشن نه
مشكل از كجاست؟؟؟؟ميشه بگيد ؟
مگر بايد مقادير يكي باشن؟؟؟

Galawij
یک شنبه 20 شهریور 1390, 18:21 عصر
بله دوست عزیز، شما در شرطتون این را لحاظ کردید:

on test1.id=test2.id
در نتیجه چون مقادیر یکی نیستند، چیزی در خروجی نمایش داده نمی شود.

oliya24
یک شنبه 20 شهریور 1390, 18:30 عصر
ممنون از جوابتون يه سوال دارم اگر ميشه اين رو به بنده بگيد ايا مقادير id ها در هر دو جدول بايستي يكي باشن تا بتوان بين انها ارتباط برقرار كرد ؟؟؟؟

اگر اره خوب فرض بفرماييد كه ما نياز داريم بين 2 جدول ارتباط برقرار كنميم ولي فيلد كليد اصلي در 2 جدول مقادير يكساني ندارن ما چطاور ميتونيم بين اين 2 جدول ارتباط برقرار كنيم ؟؟؟

Galawij
یک شنبه 20 شهریور 1390, 18:43 عصر
دوست عزیز،
برای ارتباط بین دو جدول، باید مقادیر کلیدها یکسان باشد، این یکسان بودن به مقدار کلید اصلی جدول اول و مقدار کلید خارجی معادل این جدول در جدول دوم برمی گردد(ارتباط یک به چند)، و ربطی به کلید اصلی جدول دوم ندارد.
در ارتباط های یک به یک هم باید هر دو مقدار کلید اصلی با هم برابر باشد.

در هر 2 جدول هم id کلید اصلی هست
چون شما گفته بودید که هر دو فیلد کلید اصلی هستند، من نتیجه گرفتم که بین دو جدولتان ارتباط یک به یک دارید.

pashna
چهارشنبه 23 شهریور 1390, 09:21 صبح
سلام ،
inner join دو جدول رو نظیر به نظیر و با توجه به کلید join میکنه .. ولی راه های دیگه ای برای join کردن وجود داره .. مثل right outer join که از جدول سمت راست مقادیر رو انتخاب میکنه و اگر نظیری در جدول سمت چپ نداشته باشه مقدار null رو بر میگردونه و یا cross join که m*n که (m تعداد ردیف ها در جدول 1 و n تعداد ردیف های جدول 2 است) رو بدون نیاز به کلید بر میگردونه.
در استفاده از join خیلی باید دقت کرد.
این هم یه لینک مرتبط که میتونه مفید باشه
http://en.wikipedia.org/wiki/Join_%28SQL%29

یوسف زالی
چهارشنبه 23 شهریور 1390, 13:31 عصر
سلام دوست من.
اینجا در مورد join ها توضیح خوبی گذاشتم:
http://barnamenevis.org/showthread.php?290608-راهنمایی-درباره-join&highlight=%D8%A7%D9%86%D9%88%D8%A7%D8%B9+join