PDA

View Full Version : مرتب کردن چند جدول برحسب تاریخ



atefeh90
پنج شنبه 26 آذر 1394, 20:12 عصر
سلام دوستان می‌خوام 8تا جدول رو برحسب تاریخ مرتب کنم که فیلدهای آنها با هم فرق می‌کند وتقریبا فقط 4یا5 تا فیلد مشترک دارند،میشه لطفا کمکم کنید که چیکار کنم؟سرچ هم کردم ولی برای اینکه فیلدهای جدول متفاوت باشه چیزی پیدانکردم.کمک فوری فوری

Unique
پنج شنبه 26 آذر 1394, 23:53 عصر
۸ تا select بگیر بریز توی یک آرایه و بر اساس تاریخ مرتب کن ! اما عموما این سوال ها معنیش اینه شما منطق را اشتباه میرین. کامل توضیح بدین جریان چیه و از چی میخواین خروجی بگیرین ؟! جدوال چی هستند ؟ اصلا چرا وقتی غیر مرتبط هستند باید بر اساس تاریخ منظم شوند ؟! چطوری میخواین چند تا جدول نا مرتبط را نشون بدین !؟

atefeh90
جمعه 27 آذر 1394, 11:52 صبح
۸ تا select بگیر بریز توی یک آرایه و بر اساس تاریخ مرتب کن ! اما عموما این سوال ها معنیش اینه شما منطق را اشتباه میرین. کامل توضیح بدین جریان چیه و از چی میخواین خروجی بگیرین ؟! جدوال چی هستند ؟ اصلا چرا وقتی غیر مرتبط هستند باید بر اساس تاریخ منظم شوند ؟! چطوری میخواین چند تا جدول نا مرتبط را نشون بدین !؟
سلام برای یک سایت فروشگاهی که قطعات الکترونیکی بفروش میرسه، 8تاجدول که لیست کالاها هست و فیلدهایی مثل قیمت و تصویر و نام که بین 8تاجدول مشترک هست رو نمایش بده و فیلد تاریخ هم در همه‌ی جدول‌ها مشترک است و حالا میخوام این 8تا جدول رو بر اساس تاریخ مرتب کنم و عکس و نام و قیمت آنها رانمایش بدم در واقع میخوام تو صفحه اصلی جدیدترین کالاهارانمایش بدم وحالا نمیدونم چطوری بنویسم،اگه میشه یکم واضح تر توضیح بدید؟

Unique
جمعه 27 آذر 1394, 14:16 عصر
اینطوری که شما توضیح دادین من استنباط میکنم پایگاه داده به شکلی طراحی شده که هر دسته از کالا را براش یک جدول اختصاص دادن ، البته اصولی نیست و بهتر بود یک جدول برای کل کالا ها در نظر میگرفت و مشخصات ریز هر دسته که با دسته دیگه فرق میکنه را توی جداول دیگه کار میکرد.

این طراحی ساختار بد خیلی جا ها میتونه مشکل ساز بشه اما راه حل داره ، میتونین از union استفاده کنید اینطوری :

(select p_id,p_name,p_picture,p_date,'p1' from products1)
union all
(select p_id,p_name,p_picture,p_date,'p2' from products2)
union all
(select p_id,p_name,p_picture,p_date,'p3' from products3)
union all
(select p_id,p_name,p_picture,p_date,'p4' from products4)
union all
(select p_id,p_name,p_picture,p_date,'p5' from products5)
union all
(select p_id,p_name,p_picture,p_date,'p6' from products6)
union all
(select p_id,p_name,p_picture,p_date,'p7' from products7)
union all
(select p_id,p_name,p_picture,p_date,'p8' from products8) order by p_date desc limit 10;

چند تا نکته :
- تعداد ستون ها دقیقا باید مثل هم باشن
- select ها را حتما توی پرانتز بگذارین وگرنه order by و Limit فقط توی select اخر اعمال میشن.
- اون ستون آخر را من خودم پیشنهادی قرار دادم که متوجه بشین رکورد مربوط به کدوم جدول بوده ، دلیلش اینه حالا میخواین وقتی کاربر روی یک محصول کلیک کرد اون را بریزیم توی سبد خرید و نیاز به شماره منحصر به فرد داریم ، اگه شماره منحصر به فرد (یا رشته منحصر به فرد مثل GUID) در نظر گرفته شده جای p1,p2,p3,... اون فیلد را بخونین و خلاص ، ولی اگه چنین چیزی نیست با استفاده از این فیلد ثابت رشته ای میتونیم بفهمیم رکورد مربوط به کدوم جدول بوده.

موفق باشین.

atefeh90
جمعه 27 آذر 1394, 16:49 عصر
سلام خیلی خیلی ازتون متشکرم ومشکلم حل شد!راستش فیلدای جداول خیلی متفاوت وزیاد هستن ونمیشد که یک جدول بگیرم.خیلی برا کد نویسی به مشکل خوردم وخدارو شکر تقریبا آخراشم ویکسری جزئیات کوچیکش مونده.سبد خرید رو نوشتم وتوی Tblbasket فیلدی بنام table گذاشتم که نام جدول رو ذخیره می‌کنه ومتوجه میشیم از کدوم جدول اومده. بازم ازتون متشکرم

Unique
جمعه 27 آذر 1394, 22:20 عصر
راستش فیلدای جداول خیلی متفاوت وزیاد هستن ونمیشد که یک جدول بگیرم
فیلد های مشترک را توی یک جدول به نام products میگذاشتین و بر حسب نوع محصول جداول مشخصات میساختین و با کلید خارجی به جدول اصلی مرتبط میکردین. ساختار شما اصلا درست و بهینه نیست در کل.