اذهب إلى المحتوى

السؤال

نشر

لدينا جدولين people و companies نريد جلب اسماء الموظفين مع اسماء الشركات التي كانو يعملون بها  حيث نريد فقط جلب بيانات الشركة (الشركات) التي لها أكبر عدد موظفين سابق    

أي أن الاستعلام الفرعي سيجلب الشركات التي لها أكبر عدد موظفين حسب الخاصية PREV_COMPANY_ID ثم نريد دمجه مع جدول الموظفين لجلب الاسم

هل يمكن المساعدة

photo_2021-10-01_17-34-51.jpg.b82d416b63a3549e67b1df6c6643d2dc.jpg

الشيفرة التي حاولت بها

select res.prvid , res.pname from (
    select p.PREV_COMPANY_ID as prvid , p.name as pname
    from people p 
    group by p.PREV_COMPANY_ID
    having count(*) = (select max(count(*)))
) as res;

 

Recommended Posts

  • 0
نشر

لنقم بتفكيك الإستعلام لفهمه أولا : 

  • نحتاج تحديد معرف الشركة التي لها أكبر عدد موظفين سابق , و ذلك عن طريق قراءة أكثر قيمة معروفة أو مكررة في جدول الموظفين people . يترجم إلى : 
    SELECT PREV_COMPANY_ID
    FROM people 
    GROUP BY PREV_COMPANY_ID 
    ORDER BY COUNT(PREV_COMPANY_ID) 
    DESC LIMIT 1;

     

  • بناء على نتيجة الإستعلام السابق , نحتاج تحديد وجلب معلومات هاته الشركة , و يكون ذلك عن طريق القراءة من جدول الشركات companies : 

    SELECT * FROM companies WHERE id = TARGET_RESULTED_ID

    حيث أن القيمة TARGET_RESULTED_ID هي القيمة الناتجة عن الإستعلام السابق .

  • ثم بمساعدة الإستعلام الفرعي أو الـ sub Query لنقم بدمجهما معا ليكونا على النحو التالي : 

    SELECT * FROM companies WHERE id = (
         SELECT company_id
         FROM people GROUP BY company_id ORDER BY COUNT(company_id) DESC LIMIT 1
    )

     

و ما سيقوم به هذا الإستعلام هو ببساطة كالتالي : 

  • جلب معلومات الشركة التي معرفها يساوي ( أكثر معرف شركة مكرر في جدول الموظفين ) .

و بعبارة أخرى : 

اقتباس

 جلب بيانات الشركة التي لها أكبر عدد موظفين سابق .

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...