PDA

View Full Version : mysql union select order by



dousti_design
شنبه 30 دی 1391, 14:21 عصر
با سلام.
دوستان عزیز.
من یه دیتابیس دارم که اخبار رو توش ذخیره میکنم و چونکه حجم داده هام خیلی زیاده برای اینکه زیاد سنگین نشن جدول ها از 8تا جدول جداگانه با فیلدهای یکسان استفاده کردم. مثلا(یه جدول برای اخبار ورزشی یکی برای اخبار اقتصادی و...). حالا وقتی میخام آخرین اخبار رو نشون بدم نمیتونم بر اساس فیلد تاریخ ( که توی هر 8تا جدول وجود داره) مرتب کنم و آخرین اخبار رو بدست بیارم.


SELECT title, date
FROM news_1
union select title, date from news_2
union select title, date from news_3
union select title, date from news_4
union select title, date from news_5
union select title, date from news_6
union select title, date from news_8
order by date desc LIMIT 30

این کوئری داده های هرجدول رو جداگانه مرتب میکنه و نمایش میده. مثلا اول کل دیتاهای جدول news_4 میاد بعدش که تموم شد میره سراغ جدول های دیگه.

wallfa
یک شنبه 01 بهمن 1391, 11:05 صبح
فکر میکنم راه حلت استفاده از اسکیو ال جوین باشه ! join البته دقیق نمیدونم ، شاید باید تمام سطر خبر هات بخونی بیاری توی پی اچ پی پردازش کنی که کدوم تاریخ جلوتره ! ولی فکر میکنم کاملا راه اشتباهی رفتی ! چون که سیستم های بزرگ مثل ورد پرس ، جوملا و دروپال حتی توی افزونه های خودشون از این مدل تو استفاده نمی کنند ! تو حتی پردازش رو هم بالا بردی ! به نظرم مهندسی بدی انجام دادی !

dousti_design
یک شنبه 01 بهمن 1391, 21:17 عصر
خیلی ممنون مشکلم با همون union select حل شد.
یعنی نباید چندتا جدول میذاشتم؟ همشون تو یه جدول باشه بهتره؟