PDA

View Full Version : مشکل با join



css-man
پنج شنبه 17 مهر 1393, 14:40 عصر
دوستان من بین 3تا جدول join زدم
حالا توی واکشی الاعات به شکل خوردم فیلدهایی که اسامی مشترک دارن رو نمیتونم استفاده کنم

مثلا هم تو جدول اول فیلد name دارم هم تو جدول سوم

چطوراینارو تفکیک کنم اینم دستور join



SELECT * FROM `products` LEFT OUTER JOIN brands ON products.brand_id = brands.brand_id LEFT OUTER JOIN categories ON products.category_id = categories.cat_id WHERE products.id = 1235

MMSHFE
پنج شنبه 17 مهر 1393, 15:09 عصر
ساده ترین راه، استفاده مجزا از فیلدهاست. مثال:
SELECT `p`.`id` AS `p_id`,`p`.`name` AS `p_name`,`b`.`title` AS `b_title`,`c`.`name` AS `c_name`
FROM `products` `p`
LEFT OUTER JOIN `brands` `b` ON `p`.`brand_id`=`b`.`brand_id`
LEFT OUTER JOIN `categories` `c` ON `p`.`category_id`=`c`.`cat_id`
WHERE (`p`.`id`='1235');

css-man
پنج شنبه 17 مهر 1393, 15:38 عصر
مرسی از کمکتون
فکر میکردم نوعی از join باشه که اینا رو بتونه تفکیک کنه

از این به بعد اسم فیلدهاو رو اینجوری نمیزارم که داستان نشه

MMSHFE
پنج شنبه 17 مهر 1393, 15:44 عصر
خیر چنین Join خاصی وجود نداره. البته اگه تعداد فیلدها زیاد باشه یک راه دیگه هم هست که کوئری طولانی میشه ولی خودش اسم جدول رو اول هر فیلد اضافه میکنه و _ میگذاره بین اسم جدول و اسم فیلدها ولی همونطور که گفتم هم طولانیه و هم کمی کند میکنه چون از متغیر ست کردن توی کوئری و GROUP_CONCAT و INFORMATION_SCHEMA و... استفاده میکنه و راهی که تو پست قبلی گفتم از همه ساده تره.

css-man
پنج شنبه 17 مهر 1393, 15:59 عصر
چرا بخش where رو داخل پرانتز مینویسید؟

MMSHFE
پنج شنبه 17 مهر 1393, 17:42 عصر
بخاطر رعایت ساختار استاندارد Query و جلوگیری از خطاهای احتمالی.