السلام عليكم ورحمة الله
وكل عام وانتم بخير
اخواني بحثت كثيرا عن حل لمشكلتي فلم اجد الى الآن
اتمنى اجد الجواب
المطلوب داخل المثال
السلام عليكم ورحمة الله
وكل عام وانتم بخير
اخواني بحثت كثيرا عن حل لمشكلتي فلم اجد الى الآن
اتمنى اجد الجواب
المطلوب داخل المثال
فيما يلي جملة SQL المطلوبة إن شاء الله:
SELECT TOP 3 employees.name AS NAME FROM employees INNER JOIN report ON employees.num = report.num GROUP BY NAME, employees.num, report.num, report.report HAVING (((report.report)='ممتاز')) ORDER BY Count(report.year) DESC;
كل ما عليك هو استخدام الجملة أعلاه في برنامجك كالتالي:
sql = "SELECT TOP 3 employees.name AS NAME " & _ "FROM employees INNER JOIN report " & _ "ON employees.num = report.num " & _ "GROUP BY NAME, employees.num, report.num, report.report " & _ "HAVING (((report.report)='ممتاز')) " & _ "ORDER BY Count(report.year) DESC;"
بارك الله فيك اخي الكريم
بس المشكله لازالت قائمه
ما ريده هو الموظفين اللي حصلوا على ممتاز في اخر ثلاث تقارير سنويه لهم
وليس اخر ثلاث موظفين
اخي الكريم :
السلام عليكم ورحمة الله وبركاته
جملة الـ SQL اعلاهـ تسترجع الموظفين اللي حصلوا على ممتاز في اخر ثلاث تقارير سنويه لهم
وهذا هو ماتريد .. إلا إذا كان أنا مافهمت ما ذا تريد بالضبط :huh:
اخوي انت كاتب SELECT TOP 3 EMPLOYEES.NAME
واضح انها تعيد اخر ثلاث موظفين
اخي انت جربت الحل ولا تفترضه افتراض
اخوي كلامك صحيح انا كاتب SELECT TOP 3 EMPLOYEES.NAME بس فعلياً الجملة كاملة ترجع جميع الموظفين اللي حاصلين على ممتاز في آخر ثلاث تقارير.
أنا جربت الجملة مرتين مرة من برنامج Microsoft Access و مرة من الـVB6 وعشان اتأكد من صحة الجملة جعلت آخر ثلاث تقارير لجميع الموظفين ممتاز و الجملة رجعتلي جميع الموظفين و ليس ثلاثة فقط.
و على كل حال ستجد هنــــــا مشروعك بعد التعديل كل ماعليك فتحه بالـVB6 و تنفيذه للتأكد من كلامي.
و بعدين لا أنا و لاغيري ممكن يركب زي هالجملة المعقدة و يفترض انها ترجع المطلوب مباشرة ، أكيد ما رديت عليك و لا عطيتك الحل الا وأنا مجربه أكثر من مرة و مثل ماذكرت بالأعلى جربت الجملة من الـAccess و الـVB.
و أسفين على الإزعاج!!!
بارك الله فيك اخي علىالتجاوب والمساعده
بس النتيجه هي نفسها بمعنى ان الاستعلام يعطيني الموظفين اللي حصلوا اخر تقدير ممتاز في 3 تقارير لهم دون اشتراط ان تكون التقارير في السنوات الاخيره
اي ان اي موظف حصل على ثلاث مرات على ممتاز يظهر معي في الاستعلام وليس شرط ان يكون التقرير في الثلاث سنوات الاخيره
وهذا اللي مابيه
اخي الكريم،
فهمت قصدك و المطلوب بالضبط. لكن و ش رايك في حل المشكلة هذي برمجياً؟
بمعنى أنه إذا كان الحصول على جملة الـSQL التي تؤدي الغرض صعباً أو مستحيلاً، فأرى أن تقوم بالحصول على المطلوب بطريقة أخرى، وهي عن طريق الكود.
اليك خطوات الحل برمجياً:
لقد قمت بتنفيذ الخطوات أعلاه و ستجد هنـــــــــا برنامجك بعد تنفيذه بالطريقة السابقة.
ملحوظة:
لو قدرت تحصل على جملة SQL التي تؤدي الغرض فهذا أفضل بكثير لأن أداء البرنامج سيكون أسرع بكثير، خاصة إذا كان عدد السجلات كبير (عدد الموظفين كبير و لكل موظف هناك عدد كبير و متزايد من التقارير). على عكس الطريقة البرمجيه أعلاه فإذا كان عدد السجلات كبير فإن تنفيذ الاستعلام المطلوب (برمجيا) سيستغرق وقت طويل.
ممكن تعمل التقرير دة علي اكثر من جدول يعني تعمل اكثر من جدول استعلام وبعدن تنفذ جملت ال sql عليهم
اخي الدوسري انت رائعوالحل الذي وضعته لازال لا يعطي النتيجه المطلوبهبس محاوله تنم عن تمكن بصراحه ماشاء الله عليكاخي انا عندي جمله sql تخرج الموظفين اللي حصلوا على اكثر من 250 في مجموع اخر ثلاث درجات لهموقام بوضعها الاخ اسامه ساضعها هنا لك وممكن تستفيد منها للتوصل للحلاما انا عجزتاخي الدوسري انت رائعوالحل الذي وضعته لازال لا يعطي النتيجه المطلوبهبس محاوله تنم عن تمكن بصراحه ماشاء الله عليكاخي انا عندي جمله sql تخرج الموظفين اللي حصلوا على اكثر من 250 في مجموع اخر ثلاث درجات لهموقام بوضعها الاخ اسامه ساضعها هنا لك وممكن تستفيد منها للتوصل للحلاما انا عجزتوهنا المثال مرفق
serious كتب:اخي الدوسري انت رائعوالحل الذي وضعته لازال لا يعطي النتيجه المطلوبهبس محاوله تنم عن تمكن بصراحه ماشاء الله عليكاخي انا عندي جمله sql تخرج الموظفين اللي حصلوا على اكثر من 250 في مجموع اخر ثلاث درجات لهموقام بوضعها الاخ اسامه ساضعها هنا لك وممكن تستفيد منها للتوصل للحلاما انا عجزتاخي الدوسري انت رائعوالحل الذي وضعته لازال لا يعطي النتيجه المطلوبهبس محاوله تنم عن تمكن بصراحه ماشاء الله عليكاخي انا عندي جمله sql تخرج الموظفين اللي حصلوا على اكثر من 250 في مجموع اخر ثلاث درجات لهموقام بوضعها الاخ اسامه ساضعها هنا لك وممكن تستفيد منها للتوصل للحلاما انا عجزتوهنا المثال مرفق
أخوي معليش عندي سؤال انت تقول انك تبغى الموظفين اللي حصلوا على ممتاز في اخر ثلاث تقارير سنويه لهم، فهل تقصد أخر ثلاث تقارير سنوية متتالية أم لا؟
فعلى سبيل المثال لو كان الموظف علي لديه التقاريرالتالية:
2002 ممتاز
2003 ممتاز
2007 ممتاز
لاحظ أنه لاتوجد تقارير للسنوات 2004 و 2005 و 2006، فهل الموظف علي يعتبر من الموظفين اللي حصلوا على ممتاز في اخر ثلاث تقارير سنويه لهم؟
أيضا أريد منك عندما تقول أن الحل لايعطي النتيجة المطلوبة ان تذكر مثال يبين فعلاً أن الحل لايعطي المطلوب.
و شــكــراً،،،
نعم بالضبط
اريد ان احصل على الموظفين اللي حصلوا على ممتاز في اخر ثلاث تقارير مسجله لهم
لانه ممكن تمر سنه مايسجل تقرير لظروف ما
والحل اللي وضعته يعطيني الموظفين اللي حصلوا على ممتاز في ثلاث تقارير لهم ولا يشترط ان تكون التقارير الاخيره لهم
لانه من الممكن ان الموظف حصل على جيد في اخر سنه
ويكون قد حصل قبلها على 3 تقارير ممتاز
فيظهر هذا الموظف في الاستعلام وهذا اللي مابيه
وايضا يشترط ان تكون التقارير في ال 3 سنوات الاخيره طبعا المسجله لهم
اتمنى ان الفكره وصلت
ماحد عنده حل لي
هل من جواب
ياخوان احتاج احمل الامثله
هل حذفت من الموقع