PDA

View Full Version : کوئری گرفتن از چند جدول



Veteran
دوشنبه 07 اسفند 1391, 19:48 عصر
سلام دوستان.
یک جدول داریم مثلا دوتا فیلد داره
user_id,post_id
با فرض مقادیر زیر
30,55
30,58
20,99
20,56
حالا یک جدول داریم که اطلاعات پست ها داخلش هست
با فیلد های زیر
post_id,subject
خوب حالا ما میخوام اطلاعات رو از جدول اول بر اساس ایدی کاربر فیلتر کنیم مقلا بر اساس شماره 30
خروجی میشه 55و58
حالا میخوام بر اساس شماره 30 که فیلتر کردم اطلاعات پست ها هم به خروجی بده یعنی اگر ما فیلتر کردیم و خروجی شد 55و58 اطلاعات پست هایی که هم پست ایدی های اونا توی جدول دوم 55و58 هست به خروجی بره
اما چطور ؟

Unique
سه شنبه 08 اسفند 1391, 16:15 عصر
دوست عزیز خیلی ساده join کنید :

select t2.post_id,t2.subject from userposts t1 inner join posts t2 on t1.post_id = t2.post_id where t1.user_id = 30

Veteran
سه شنبه 08 اسفند 1391, 19:56 عصر
ببخشین میشه یکم واضح تر کد رو بنویسین ؟:لبخند: ممنون میشم

Veteran
پنج شنبه 10 اسفند 1391, 21:55 عصر
حقیقتش بنده زیاد این کوئری رو نمیتونم درک کنم.ممکنه یکم واضح تر بنویسین:لبخند:

linuxUser
پنج شنبه 10 اسفند 1391, 22:13 عصر
دوست عزیز خیلی ساده join کنید :
select t2.post_id,t2.subject from userposts t1 inner join posts t2 on t1.post_id = t2.post_id where t1.user_id = 30

این دستور کاملا درسته
شرح کد بالا اینه که ما دو تا جدول داریم . اسم جدول userpostsمی ذاریم t1 و اسم جدول postsمی ذاریم t2
با استفاده از دستور join ساختاری شبیه یک جدول ثانویه ایجاد می شه که در هر سطر 4 ستون داره :
userposts.user_id userposts.post_id posts.post_id posts.subject
در واقع دو جدول بالا به نحوی در هم ضرب می شن (join) و سطر هایی که دارای post_id یکسان هستند کنار هم گذاشته شده اند این کار این قسمت کد انجام می ده : on t1.post_id = t2.post_id
بعد هم یک شرط قائل می شیم
where t1.user_id = 30

Veteran
پنج شنبه 10 اسفند 1391, 22:32 عصر
ساده تر نمیشه نوشت ؟
این t1,t2 منو گیج کرده
مگر جدول posts رو نذاشتیم t2
join posts t2
خوب این چه مفهومی داره ! دوبار اسم جدول تکرار بشه

linuxUser
پنج شنبه 10 اسفند 1391, 22:51 عصر
این دیگه ساده ترین حالتش هست :
select posts.post_id, subject from userposts inner join posts on userposts.post_id = posts.post_id where user_id = 30



دقت کنید که وقتی در دو جدول فیلد با اسم یکسان وجد داشته باشه از اسم جدول قبل از اسم فیل استفاده می شه تا مشخص بشه اون فیلد مال کدوم جدوله مثل فیلد post_id
که در کد بالا posts.post_id استفاده شده برای مشخص کردن فیلد post_id از جدول posts و
userposts.post_id استفاده شده برای مشخص کردن فیلد post_id از جدول userposts