PDA

View Full Version : کوئری گرفتن از این جدول



seniamail
چهارشنبه 31 تیر 1388, 08:32 صبح
با سلام
با چه دستوری میتوان از جدول بالایی در عکس ضمیمه شده کوئری گرفت تا جدول پایینی حاصل شود؟

محمد سلیم آبادی
چهارشنبه 31 تیر 1388, 09:48 صبح
SELECT NAME, Date, Score
Table_1 FROM
WHERE Score=30

ASKaffash
چهارشنبه 31 تیر 1388, 10:10 صبح
سلام
اینطوری :


Select T1.Name,
Date=(Select Top 1 Date From TBL T2 Where T1.Name=T2.Name Order By T2.Score Desc),
Score=(Select Top 1 Score From TBL T2 Where T1.Name=T2.Name Order By T2.Score Desc)
From TBL T1
Group By T1.Name

seniamail
چهارشنبه 31 تیر 1388, 18:34 عصر
SELECT NAME, Date, Score
Table_1 FROM
WHERE Score=30


منظورم بیشترین مقدار Score برای هر شخصه نه مقدار 30!

seniamail
چهارشنبه 31 تیر 1388, 19:09 عصر
Date=(Select Top 1 Date From TBL T2 Where T1.Name=T2.Name Order By T2.Score Desc),
Score=(Select Top 1 Score From TBL T2 Where T1.Name=T2.Name Order By T2.Score Desc)


میشه در مورد این دو خط توضیح بدین
اگه خواسته باشیم کمترین مقدار Score را پیدا کنیم چکار باید کنیم؟
واژه Top یعنی همان بیشترین مقدار؟

محمد سلیم آبادی
چهارشنبه 31 تیر 1388, 20:51 عصر
منظورم بیشترین مقدار Score برای هر شخصه نه مقدار 30!



SELECT Name, Date , Score
FROM t1
WHERE Score= (SELECT MAX (Score) FROM t1 AS t WHERE t1.name=t.name)

محمد سلیم آبادی
چهارشنبه 31 تیر 1388, 21:42 عصر
شما به طور شفاف صورت مساله را مطرح نکردید.
مثلا اگر یک نام دارای چند امتیاز یکسان باشد مثلا ALI در دو تاریخ متفاوت دو امتیاز یکسان آورده باشد و این دو امتیاز بالاترین امتیازها باشد آیا تنها یک سطر از این دو سطر را می خواهید یا خیر.

Query که برایتان نوشتم تمام سطرهایی که بیشترین امتیاز را دارند بر می گرداند.

مثلا داده های زیر را در نظر بگیرید.


ali 1 30
ali 2 31
ali 3 31
reza 4 30
reza 3 35
reza 5 35


پس از اجرای کوئری:


reza 3 35
reza 5 35
ali 2 31
ali 3 31

علیرضا مداح
پنج شنبه 01 مرداد 1388, 07:58 صبح
سلام دوست عزیز،
از تصویر فوق می توان برداشت های گوناگونی داشت و کوئری های متفاوتی برای آن نوشت، پس باید ابتدا هدف/خروجی کوئری مورد نظر را به طور شفاف شزح دهید تا بتوان پاسخ دقیقی ارائه داد،/

محمد سلیم آبادی
جمعه 09 مرداد 1388, 03:38 صبح
دو روش جدید برای پیاده سازی query مورد نظر.
نام جدول مورد نظر = t



-- Without MAX function!
SELECT Name, date, Score
FROM t AS t1
WHERE Score >=ALL (SELECT Score
FROM t AS t2
WHERE t1.Name=t2.Name)

-- With MAX function.
SELECT Name , date,Score
FROM t AS t1
WHERE Score=(SELECT MAX(Score)
FROM t AS t2
WHERE t1.Name=t2.Name)

-- Without GROUP BY !
SELECT Name,date=(SELECT TOP 1 Score
FROM t AS t1
WHERE Name=d.Name
AND t1.Score=Score
ORDER BY date),
Score=(SELECT MAX(Score)
FROM t
WHERE Name=d.Name)
FROM(
SELECT DISTINCT Name
FROM t
) AS d

ASKaffash
شنبه 10 مرداد 1388, 08:23 صبح
میشه در مورد این دو خط توضیح بدین
اگه خواسته باشیم کمترین مقدار Score را پیدا کنیم چکار باید کنیم؟
واژه Top یعنی همان بیشترین مقدار؟

سلام

1- این دوخط استفاده از SubQuery است
2- عبارت Desc را حذف کنید
3- نه - به معنی این است که از ابتدای کوئری به تعداد n رکورد بازگردد