PDA

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



kavoshgar63
سه شنبه 03 اسفند 1389, 23:53 عصر
سلام
من یه سیستم مکاتبه داخل سایتم درست کردم که ساختارش به طور خلاصه به شکل زیره
id:شناسه پیغام
from: شناسه فرستنده
to : شناسه گیرنده
subject : موضوع نامه
و یک جدول کاربری دارم که اون هم به طور خلاصه به این شکله
id: شناسه کاربر
name : نام کاربر
username: نام کاربری
خب اصل ماجرا اینه که وقتی می خوام ساختار رو پیاده سازی کنم و با Left Join بجای شناسه فرستنده نام فرستنده رو از جدول کاربری بخونم مشکل پیدا میشه و اون مشکل اینه که نمی دونم دومین نفری که گیرنده هست چطوری باید نامش رو از جدول کاربری بخونم
مثال می زنم
کاربر شماره 1 به نام احمد به کاربر شماره 2 به نام حسین یه نامه می فرسته
این جدول نامه من هست
id=1
from=1
to=2
subject=salam
خب من کوئری زیر رو می نویسم


SELECT *,`id` as msgid,users.name as name FROM `table_message_box` LEFT JOIN users ON table_message_box.to=users.id

حالا وقتی که من میام این کوئری رو اجرا می کنم و می خوام که نام فرستنده و نام گیرنده رو به من بده فقط و فقط نام اولین نفر رو بهم میده و نمی تونم نفر دوم رو ازش بیرون بکشم
چه کوئری باید بنویسم تا مشکلم برطرف بشه

kavoshgar63
چهارشنبه 04 اسفند 1389, 11:44 صبح
کسی نیست که جواب ما رو بده؟

mohsen6500
چهارشنبه 04 اسفند 1389, 12:21 عصر
خوب چه کاریه یکی یکی بگیرشون!
چرا خودتو اینقدر عذاب میدی؟

kavoshgar63
چهارشنبه 04 اسفند 1389, 12:35 عصر
خوب چه کاریه یکی یکی بگیرشون!
چرا خودتو اینقدر عذاب میدی؟
دوست عزیز :
در زمانی که داده ها کمه این روش رو میشه استفاده کرد ولی زمانی که داده ها زیاد میشه و تعداد رکوردها هم زیاده کلی کوئری باید اجرا کرد.

MMSHFE
پنج شنبه 05 اسفند 1389, 08:44 صبح
با سلام، دوست گرامي اين Query كار مورد نظر رو براتون انجام ميده:


SELECT `t1`.`id`,`t2`.`name` AS 'from',`t3`.`name` AS 'to'
FROM `table_message_box` AS `t1`
INNER JOIN `users` AS `t2` ON `t1`.`from`=`t2`.`id`
INNER JOIN `users` AS `t3` ON `t1`.`to`=`t3`.`id`
موفق و مؤيد باشيد.