BORHAN TEC
یک شنبه 16 مرداد 1390, 16:21 عصر
سلام
من برای نوشتن یک کوئری به مشکل برخورد کرده ام که شرح آن به شکل زیر است:
فرض کنید یک جدول به شکل زیر داریم که اطلاعات موجود در آن به شرح زیر است و نام جدول هم مثلاً myTable است:
Name | Family | Lesson | Mark
---------|--------------|--------------------|---------
Ali | Alian | Data Structure | 17
Ali | Alian | CPP | 13
Hamed | Najafi | CPP | 16
Hamed | Najafi | DB | 17
Hamed | Najafi | OS | 19
مسئله: می خواهیم ابتدا اطلاعات را گروه بندی کنیم و سپس سطری را به عنوان نتیجه ببینیم که بیشترین نمره شخص را در فیلد Mark مربوط به آن سطر وجود دارد. به عبارتی دیگر می خواهیم بعد از اجرای کوئری نتیجه زیر حاصل شود:
Name | Family | Lesson | Mark
---------|--------------|--------------------|---------
Ali | Alian | Data Structure | 17
Hamed | Najafi | OS | 19
من این موضوع را می دانم که این پایگاه داده از نظر نرمال سازی اشکال دارد. ولی چون این پایگاه داده بین چند برنامه مشترک است و از طرفی من کد مربوط به این برنامه را در اختیار ندارم نمی توانم ساختار پایگاه داده را تغییر دهم. حال کسی می تواند یک کوئری مناسب را برای رسیدن به نتیجه بنویسد؟ در صورت امکان کوئری به شکلی باشد که با استاندارد Ansi SQL 92 سازگار باشد تا بتوان از آن در RDMS های مختلف استفاده کرد.
من برای نوشتن یک کوئری به مشکل برخورد کرده ام که شرح آن به شکل زیر است:
فرض کنید یک جدول به شکل زیر داریم که اطلاعات موجود در آن به شرح زیر است و نام جدول هم مثلاً myTable است:
Name | Family | Lesson | Mark
---------|--------------|--------------------|---------
Ali | Alian | Data Structure | 17
Ali | Alian | CPP | 13
Hamed | Najafi | CPP | 16
Hamed | Najafi | DB | 17
Hamed | Najafi | OS | 19
مسئله: می خواهیم ابتدا اطلاعات را گروه بندی کنیم و سپس سطری را به عنوان نتیجه ببینیم که بیشترین نمره شخص را در فیلد Mark مربوط به آن سطر وجود دارد. به عبارتی دیگر می خواهیم بعد از اجرای کوئری نتیجه زیر حاصل شود:
Name | Family | Lesson | Mark
---------|--------------|--------------------|---------
Ali | Alian | Data Structure | 17
Hamed | Najafi | OS | 19
من این موضوع را می دانم که این پایگاه داده از نظر نرمال سازی اشکال دارد. ولی چون این پایگاه داده بین چند برنامه مشترک است و از طرفی من کد مربوط به این برنامه را در اختیار ندارم نمی توانم ساختار پایگاه داده را تغییر دهم. حال کسی می تواند یک کوئری مناسب را برای رسیدن به نتیجه بنویسد؟ در صورت امکان کوئری به شکلی باشد که با استاندارد Ansi SQL 92 سازگار باشد تا بتوان از آن در RDMS های مختلف استفاده کرد.