ورود

View Full Version : multiple LEFT OUTER JOIN



فؤاد
یک شنبه 06 مرداد 1392, 10:11 صبح
سلام

سه جدول داریم

tbl_data
--------
id
title
main_cat_id
Sub_Cat_id


tbl_Main_Cat
---------
Id
main_cat_title


tbl_Sub_Cat
----------
id
main_cat_Id
sub_Cat_title


در جدول اول (tbl_data) اطلاعاتی ذخیره شده اند ولی فیلدهای main_cat_id و Sub_Cat_id اجباری نبود و ممکن است مقدار Null داشته باشند حال میخواهیم جدول اطلاعات (tbl_data) را نمایش دهیم طوری که اگر در فیلدهای main_cat_id و Sub_Cat_id مقدار id آنها که از دو جدول دیگر (tbl_Main_Cat و tbl_Sub_Cat ) اخذ شده ثبت شده بود(یعنی null نبود) بجای id عنوان متناظر نوشته شود

لطفا با فرض فوق راهنمایی بفرمایید (خودم میدونم یه بهینه سازی کوچیک نیاز داره )

با تشکر

محمد سلیم آبادی
یک شنبه 06 مرداد 1392, 21:26 عصر
SELECT T.*, M.main_cat_title, S.sub_Cat_titile
FROM tbl_data T
LEFT JOIN tbl_Main_Cat M
ON T.main_cat_id = M.id
LEFT JOIN tbl_Sub_Cat S
ON T.Sub_Cat_id = S.id;

فؤاد
پنج شنبه 10 مرداد 1392, 15:19 عصر
جناب سلیم آبادی....سلام و تشکر

کوئری شما کار میکنه ولی وقتی من میخوام که یه شرط به انتهای کوئری اضافه کنم عملا شرط اعمال نمیشه . ممکنه راهنمایی کنید و اگه امکان داره توضیح بدین


SELECT T.*, M.main_cat_title, S.sub_Cat_titile
FROM tbl_data T
LEFT JOIN tbl_Main_Cat M
ON T.main_cat_id = M.id
LEFT JOIN tbl_Sub_Cat S
ON T.Sub_Cat_id = S.id

and t.title like 'salam'

در خط آخر من شرط مورد نظرمو درج کرده ام....

محمد سلیم آبادی
پنج شنبه 10 مرداد 1392, 15:52 عصر
شرط را در where قرار بدین به این صورت:

SELECT T.*, M.main_cat_title, S.sub_Cat_titile
FROM tbl_data T
LEFT JOIN tbl_Main_Cat M
ON T.main_cat_id = M.id
LEFT JOIN tbl_Sub_Cat S
ON T.Sub_Cat_id = S.id
WHERE t.title like 'salam'

فؤاد
جمعه 18 مرداد 1392, 06:50 صبح
شرط را در where قرار بدین به این صورت:

SELECT T.*, M.main_cat_title, S.sub_Cat_titile
FROM tbl_data T
LEFT JOIN tbl_Main_Cat M
ON T.main_cat_id = M.id
LEFT JOIN tbl_Sub_Cat S
ON T.Sub_Cat_id = S.id
WHERE t.title like 'salam'

سلام و تشکر مجدد

سوالمو تکمیل میکنم....اگه بخواهیم title های یکتا (Distinct) از جدول Tbl_data رو داشته باشیم ....کوئری فوق رو باید چطور تکمیل کرد

بازم ممنونم

محمد سلیم آبادی
جمعه 18 مرداد 1392, 17:48 عصر
من نمیدونم خروجی مورد نظر شما چیه. اگه بتونی چند سطرداده در هر کدام از جداولت بصورت نمونه درج کنی و خروجی مورد نظرت رو و منطق رو برام شرح بدی بهتر میشه جواب داد.