PDA

View Full Version : آموزش: مشکل در یک کوئری



azadeh_1510
دوشنبه 11 مهر 1390, 15:55 عصر
سلام خدمت همه:من میخوام با گروهبندی رویhst_ObjectID، روی فیلد hst_ID ، فقط برای مقدار ماکزیممش مقدار معادل stu_Name رو بده اما با کوئری زیرش به جواب نرسیدم چرا؟

hst_ObjectID hst_ID stu_Name
1806 24274 FA
1806 21058 FM
1806 24499 I
1807 22325 FM
1807 22554 I
1808 21050 FM
1808 21709 A/C
1809 21056 FM
1809 21703 I
1810 21499 FM
1810 21712 I

کوئری:SELECT hst_ObjectID, MAX(hst_ID) AS Expr1, stu_Name
FROM Table
GROUP BY hst_ObjectID, stu_Name

azadeh_1510
چهارشنبه 13 مهر 1390, 08:11 صبح
دوستان جوابی دارین؟این تالار بنظرتون نسبت به مثلا تالار C# خیلی کندتر نیست؟اونجا آدم به ساعت نرسیده جواب میگیره....اینجا اما نه فقط من که بقیه رو هم میبینم خیلی کند به جواب میرسند.دلیلش چیه؟مدیران تالار چیکار میکنند؟

mojtaheri
چهارشنبه 13 مهر 1390, 09:58 صبح
این کوئری درسته من با چند از داده های بالا تستش کردم درست بود

azadeh_1510
چهارشنبه 13 مهر 1390, 10:26 صبح
دوست عزیز با اجرای کوئری روی داده های بالا دقیقا همان رکوردها را برمیگرداند درحالیکه من میخواهم هدف گفته شده در پست اجرا گردد نه اینکه همان داده ها را در خروجی بدهد.

mojtaheri
چهارشنبه 13 مهر 1390, 10:48 صبح
hst_ObjectID hst_ID stu_Name
1806 24274 FA
1806 21058 FM
1806 22325 FM
اینم کوئری شما
SELECT hst_ObjectID, MAX(hst_ID) AS maxx, [stu_Name]
FROM [Table_1]
GROUP BY hst_ObjectID, [stu_Name]

اینم جواب


hst_ObjectID maxx stu_Name
1806 24274 FA
1806 22325 FM


شما همینطوری جواب میخواین دیگه درسته ؟

mojtaheri
چهارشنبه 13 مهر 1390, 10:52 صبح
چون شما group by v رو روی فیلد stu_Name و hst_ObjectID گذاشتین و چون هیچ دومقدار یکسانی با این دو فیلد ندارین برای همین همه رکوردهاتون رو برمیگردونه

azadeh_1510
چهارشنبه 13 مهر 1390, 12:30 عصر
باتشکر
در مثال شما چون مقادیر object_ID یکسانند جواب خروجی را اینجوری میخواهم:1806 24274 FA .......فقط همین یک رکورد نه دو رکورد.
در کل؛هدفم اینه که برای object_ID یکسان (گروپ بای) ماکزیمم مقدار hst_ID آنهارا انتخاب کن و استتوس آنرا نشان بده.
در مثال خودم جواب خروجی را اینجوری میخواهم:
hst_ObjectID hst_ID stu_Name

1806 24499 I

1807 22554 I

1808 21709 A/C

1809 21703 I

1810 21712 I

میدونم کوئری که میزنم مشکل داره اما نمیدونم کجاش؟!!!

mojtaheri
چهارشنبه 13 مهر 1390, 15:21 عصر
فکر میکنم در دو مرحله به هدفت بررسی.اول
SELECT hst_ObjectID, MAX(hst_ID) AS maxx
FROM [Table_1]
GROUP BY hst_ObjectID
سپس یک کوئری بگیری با شرط اینکه hst_ID=maxx و hst_ObjectID =@hst_ObjectID

azadeh_1510
چهارشنبه 13 مهر 1390, 15:58 عصر
هوراااااااا
درسته
مرسی