PDA

View Full Version : چجوری از این جدول select بگیرم



S_VB.max
سه شنبه 24 اسفند 1389, 10:35 صبح
code Tarikh status
-----------------------------------------------------------------
123 1389/02/12 1

123 1389/05/22 1

400 1389/07/01 1

400 1389/02/02 2

508 1389/12/02 1



سلام من می خوام لیست کدهایی که آخرین تاریخ را دارند و status آنها برابر یک است را بدست بیارم
لطفا راهنمایی کنید چجوری از این جدول select بگیرم
البته می خوام به همراه کدها ، تاریخ مربوطه هم لیست شود

Sajjad.Aghapour
سه شنبه 24 اسفند 1389, 11:30 صبح
بر اساس تاریخ مرتب کنید و مقایسه های status=1 و روزها رو انجام بدید

S_VB.max
چهارشنبه 25 اسفند 1389, 12:25 عصر
با دستور زیر فقط یک رکورد لیست میشه و همه کدها را چک نمی کنه:

select max(Tarikh) from table1 where status=1 order by Tarikh

این دستور هم تاریخ ها را بررسی نمی کنه:

select distinct code from table1 where status=1 order by Tarikh

من هنوز نتونستم راه حلی پیدا کنم

S_VB.max
چهارشنبه 25 اسفند 1389, 14:59 عصر
من این کدو به این صورت نوشتم ولی جواب نمیده:

select code,Tarikh,status from table1 group by code,Tarikh,status having status ='1' and tarikh =( select max(tarikh) from table1 where code=code)

لطفا کمک کنید

behrouzlo
چهارشنبه 25 اسفند 1389, 15:02 عصر
با دستور زیر تست کنید:

Select Code
From table1
Where Tarikh = (select max(Tarikh) from table1 where status=1)

S_VB.max
چهارشنبه 25 اسفند 1389, 15:10 عصر
سلام ممنون از اینکه توجه می کنید
با دستور شما فقط یک رکورد بدست می آید و تمام کدها لیست نمی شه

behrouzlo
چهارشنبه 25 اسفند 1389, 15:14 عصر
فکر کنم دستور بالا دستور باشه و تنها همان یک رکوردی برگشتی در شرط صدق می کند اگر N رکورد دارای بزرگترین تاریخ باشند N رکورد را برگشت خواهد داد

S_VB.max
چهارشنبه 25 اسفند 1389, 15:22 عصر
درسته با این دستور اگر N رکورد دارای بزرگترین تاریخ باشند N رکورد برگشت میده
میرم بررسی می کنم برمی گردم

S_VB.max
پنج شنبه 26 اسفند 1389, 13:57 عصر
فکر کنم دستور بالا دستور باشه و تنها همان یک رکوردی برگشتی در شرط صدق می کند اگر N رکورد دارای بزرگترین تاریخ باشند N رکورد را برگشت خواهد داد

مشکل من اینجاست که برای هر کد بزرگترین تاریخ متفاوتی وجود دارد
من می خوام تمام کدهایی را لیست کنه به شرطی که بزرگترین تاریخ و فیلد status برابر یک باشه

چیزی که من می خوام برگشت داده بشه باید چیزی مثل این باشه :

code Tarikh status
-----------------------------------------------------------------
123 1389/05/22 1

400 1389/07/01 1

508 1389/12/02 1

behrouzlo
پنج شنبه 26 اسفند 1389, 14:48 عصر
کد را به صورت زیر تغییر دهید و تست کنید :

Select T1.Code ,
T1.Tarikh
From table1 As T1
Where T1.Tarikh = ( select max(T2.Tarikh)
from table1 As T2
where T2.status = 1
And T1.Code = T2.Code
)
And T1.status = 1

Reza_Yarahmadi
پنج شنبه 26 اسفند 1389, 15:50 عصر
اگر قصد دارید همین اطلاعاتی که گفتید رو استخراج کنید (یعنی فقط کد و تاریخ) و به بقیه اطلاعات کاری ندارید میتونید بصورت زیر هم عمل کنید
Select
Code,
MAX(Tarikh) as Tarikh
From TableName
Where Status = 1
Group By
Code

S_VB.max
شنبه 28 اسفند 1389, 11:20 صبح
آقا بهروز و آقا رضا دستتون درد نکنه با کد هر دو شما همون چیزی که می خواستم برگشت میده