PDA

View Full Version : سوال: مشکل در نوشتن select مورد نظر



mokhtasatxyz
چهارشنبه 12 اسفند 1394, 02:25 صبح
سلام دوستان
امیدوارم بتوانم سوالم را قابل فهم و درست بگویم
فرض کنید چند جدول داریم با نام های t1,t2,t3,t4 که چند ستون از این جدول ها شبیه به هم است و یکی از این ستون ها تاریخ از نوع date و ستونی دیگر ساعت از نوع data باشد که تاریخ و زمان سرور ثبت رکورد را در خود ثبت می کند
می خواهیم select بنویسیم که خروجی آن به ترتیب زمان ثبت شدن رکورد ها در جدول ها باشد به طوری که مثلا اگر رکورد c در جدول t2 و در زمان 0 ثبت شد و رکورد a در جدول t4 ودر زمان 1 ثبت شد و رکورد b در جدول t2 ودر زمان 2 و ... ثبت شده باشد . نتیجه خروجی select ابتدا رکورد c سپس رکورد a و در نهایت رکورد b باشد. نه اینکه ابتدا بیاید تمامی رکورد های جدول t1 را برا ساس تاریخ ثبت و سپس تمامی رکورد های جدول t2 را بر اساس تاریخ ثبت و.... پشت سر هم select کند.
ممنون.

parnian~parnian
چهارشنبه 12 اسفند 1394, 04:37 صبح
سلام دوست عزیز
راه حل های زیادی وجود داره .... مثلا می تونی اول یه جدول مجازی درست کنی و همه ی این رکورد هارو از این 4 جدول توی اون بریزی بعد هم sort کنی
یا می تونی از کوئری joint توی sql استفاده کنی که چند تا ستون رو از چند تا جدول joint می کنه بعدش می تونی sort کنی
یا حتی می تونی 4 تا کوئری رو پشت سر هم بنویسی و از الگوریتم های سرچ استفاده کنی ولی این اگه تعداد رکورد ها زیاد باشه وقت زیادی ازت میگیره و خیلی مناسب نیست

mokhtasatxyz
یک شنبه 16 اسفند 1394, 04:00 صبح
پس اساتید کجا هستند:عصبانی++:؟:عصبانی++::عص انی++:
لطفا یک نفر منو بیشتر راهنمای کنه:افسرده::افسرده::افسرده:: فسرده:
لطفا زیر سیکل:گریه::گریه::گریه::گریه:

mokhtasatxyz
یک شنبه 16 اسفند 1394, 07:28 صبح
بگذارید سوالم رو اینطور بپرسم
چند جدول در دیتابیس دارم که همه انها فیلد date دارند
می خواهم slecte بنویسم که بر اساس تاریخ ثبت مرتب باشد
کوئری می نویسم که کار نکرد ولی چیزی شبیه به این می خوام و امید وارم منظورم رو برسونه
لطفا من را در تصحیح آن کمک کنید:

SELECT id, name,date
FROM table1, table2 , table3 , table4
ORDER BY date DESC

Unique
یک شنبه 16 اسفند 1394, 07:30 صبح
اینطوری میشه :


SELECT fld1,fld2,date
FROM (SELECT fld1,fld2,date
FROM t1
UNION ALL
SELECT fld1,fld2,date
FROM t2
UNION ALL
SELECT fld1,fld2,date
FROM t3
UNION ALL
SELECT fld1,fld2,date
FROM t4) b
ORDER BY date

Unique
دوشنبه 17 اسفند 1394, 18:47 عصر
دوست عزیز ، نیاز به پرسیدن خصوصی نیست ،‌سوالتون را همیشه توی تاپیک مطرح کنید تا بقیه هم استفاده کنند.

UNION برای یکی گرفتن رکورد های برگشتی از چند تا Select استفاده میشه. میتونید اینجا (http://www.mysqltutorial.org/sql-union-mysql.aspx) بیشتر بخونید
در مورد b بعد از جملات union هم اشتباه تایپی نیست و نام گذاری جدول حاصل هست برای Reference های مورد نیاز. من از روی عادت این کار را میکنم ولی توی این مثال نیازی بهش نیست.