PDA

View Full Version : نمایش خروجی از دیتابیس دستور innerjoin با ستون تکراری



saman.1001
چهارشنبه 24 شهریور 1395, 12:44 عصر
سلام و عرض ادب
3 جدول دارم که با دستور innerjoin خروجی گرفتم
$sql = "
SELECT ps_product.*, ps_category_lang.*, ps_product_lang.* FROM ps_product INNER JOIN ps_category_lang ON ps_category_lang.id_category = ps_product.id_category_default INNER JOIN ps_product_lang ON ps_product_lang.id_product = ps_product.id_product ORDER BY `ps_product_lang`.`id_product` DESC LIMIT 0,5
";
فعلا به تمام ستون های همه جداول دسترسی دارم
ولی در دو جدول دو ستون تکراری هست
نام ستون link_rewrite در دو جدول وجود دارد
با دستور زیر توسط php چاپ نشد

$row["ps_category_lang.link_rewrite"]

$row["ps_product_lang.link_rewrite"]
با این دستور هم فقط یک ستون شناسایی میکنه

$row["link_rewrite"]
نمیخوام نام ستون تغییر کنه
لطفا راهنمائی فرمائید
با تشکر

plague
چهارشنبه 24 شهریور 1395, 13:37 عصر
باید موقع سلکت کردن به یکیشون نام مستعار بدی


SELECT ps_category_lang.link_rewrite AS 'ps_category_lang.link_rewrite'

saman.1001
چهارشنبه 24 شهریور 1395, 15:55 عصر
ممنون از راهنمایتون
اگر ممکنه نام مستعار در sql من ادغام کنید
و اینکه با همین دستوز میشه ستون فراخوانی کرد؟
$row["link_rewrite"]

plague
چهارشنبه 24 شهریور 1395, 20:35 عصر
SELECT ps_product.*, ps_category_lang.*, ps_product_lang.* , ps_category_lang.link_rewrite AS 'ps_category_lang.link_rewrite'

سوال دومت رو متوجه نمیشم .... هر نام مستعاری توی کوئری تعریف کنی به همون نام تو خروجیت باید چاپ کنی

saman.1001
پنج شنبه 25 شهریور 1395, 11:02 صبح
من همه موارد درست پیش رفتم ولی خطا میده
بدون قرار دادن نام مستعار sql زیر بخوبی اجرا میشه
SELECT ps_product.id_product, ps_product.id_category_default, ps_category_lang.id_category, ps_category_lang.link_rewrite
FROM ps_product
INNER JOIN ps_category_lang ON ps_category_lang.id_category = ps_product.id_category_default LIMIT 0,5

142562
ولی وقتی نام مستعار میدم خطای زیر میده
SELECT ps_product.id_product, ps_product.id_category_default, ps_category_lang.id_category, ps_category_lang.link_rewrite AS ps_category_lang.link_rewrite_cat
FROM ps_product
INNER JOIN ps_category_lang ON ps_category_lang.id_category = ps_product.id_category_default LIMIT 0,5


#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '.link_rewrite_cat
FROM ps_product
INNER JOIN ps_category_lang ON ps_category_' at line 1

البته بررسی که کردم در قالب نمونه ساده میشه نام مستعار داد, یعنی موقعی که innerjoin نمیکنم , ولی وقتی نام جدول با عبارت . نقطه به ستون میچسبه و میخوام نام مستعار بدم خطا میده(درج نام مستعار درحالت innerjoin فک کنم متفاوت باشه؟)

plague
پنج شنبه 25 شهریور 1395, 11:39 صبح
نقطه مفهوم خاصی داره(تیبل) که باعث میشه وقتی تو نام مستعار استفادش میکنید کوئریتون اررور بده
اگه به نمونه کدی که من نوشتم دقت کنید نام مستعار رو توی کوتیشن گزاشتم تا مفهوم نقطه رو خنثی کنم که شما اینکار رو نکردین
نکته اینکه شما نام مستعار رو میتونید هرچیزی دلتون خواست بدین

saman.1001
پنج شنبه 25 شهریور 1395, 16:25 عصر
ممنون از راهنماییتون
ولی داخل کوتیشن هم گذاشتم و خطا داد
تو یک نمونه خارجی متوجه شدم باید نام مسنعار تنها گذاشت و بدون جدول باید باشه
مثل این مثال
SELECT ps_category_lang.link_rewrite AS ps_link_rewrite

plague
پنج شنبه 25 شهریور 1395, 16:49 عصر
نام مستعار یه نامه دیگه اونجا معنی جدول نمیده نقطه
همونجوری که بالا گفتم هرچیزی دلت بخاد میتونی بدی ... میتونی نقطه بزاری میتونی آندرلاین یا هرچیز دیگه
کوتیشن اجباری نیست اگه از کلمات یا نشانه هایی معنی دار / کلیدی استفاده نشه توش وگرنه باید بزاری تو کوتیشن
اگه اررور میده باید کوئریت رو بزاری با متن دقیق اررور تا یه بنده خدایی پیدا بشه ببینه مشکل چیه
ولی کوئری بالا که نوشتی مشکل نقطه بود و با کوتیشن حل میشه