إنتقال للمحتوى

  • تسجيل الدخول عبر الفيس بوك تسجيل الدخول عبر تويتر Log In with LinkedIn Log In with Google      تسجيل دخول    
  • إنشاء حساب

صورة
- - - - -

ممكن حد يساعدني في جملة السيليكت دي


6 رد (ردود) على هذا الموضوع

#1 tulip_tulip

tulip_tulip

    عضو

  • الأعضــاء
  • 2 مشاركة

تاريخ المشاركة 12 October 2011 - 06:53 PM

لو سمحتوا انا طالبة حد يساعدني في حل السؤال ده

بأفتراض ان عندنا 3 جداول (company1, company2, Department)

صورة

صورة

صورة

المطلوب

1) Find employee name and department name and company name

2) Find total salary for each employee in all Companies and all departments



#2 eng_saeed2007

eng_saeed2007

    عضو

  • الأعضــاء
  • 39 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 12 October 2011 - 07:48 PM

السلام عليكم ورحمه الله وبركاته...

اول حاجه علشان تجيبى اسماء الموظفين لازم يكون فى جدول الموظفين وده مش موجود
وبرده علشان نجيب اسماء الشركات محتاجين جدول الشركات
وبرده موضوع جدولين للشركات ده اصلا غلط من كل الاوجه لان الجدولين نسخه من بعض وده فى تصميم قواعد البيانات خطأ خسيم
لانه بيتعمل جدول للشركات وجدول للادارات ويتم ربطهم ببعض
المهم نبعت جدول الموظفين وجدول الشركات وانا ان شاء الله ابعتلك الحل
بس انا ليه سؤال هو منين حضرتك جبتى السؤال ده لان السؤال انا شايفه خطأ من اوجه كتيره وربنا يوفقك ان شاء الله

#3 tulip_tulip

tulip_tulip

    عضو

  • الأعضــاء
  • 2 مشاركة

تاريخ المشاركة 12 October 2011 - 08:42 PM

انا عارفة ان السؤال عجيب وغلط بس هو اتسألي في انترفيو

طيب هو لو افترضنا ان فيه جدول للموظفين عبارة عن Emp_ID وال EMP_Name دي محلولة
بس اسماء الشركات هما بس الشركتين Company1 و Company2 وكل واحدة ليها الجدول الخاص بيها

#4 amrw2006

amrw2006

    عضو

  • الأعضــاء
  • 33 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 13 October 2011 - 01:32 AM

بإفتراض وجود جدول الموظفين ( فقط لسهوله التعامل مع اسم بدلا من ID )

Employee table data

EMPID FNAME LNAME
1 MICHAEL POLAND
2 JIM KENNEDY
3 JAMES SMITH
4 ADAM ACKERMAN
5 MARTHA LEDERER
6 MARIAH MANDEZ




[/left][left]--- 1----[/left][left]SELECT	 'Company1'  CompanyName, D.Dept_name  Dept_Name, EMPLOYEE.FNAME
FROM		 Company1  C1
INNER JOIN   Department  D
ON C1.Dept = D.Dept_id
INNER JOIN   EMPLOYEE
ON C1.Emp_ID = EMPLOYEE.EMPID
UNION
SELECT	 'Company2'  , D.Dept_name  Dept_Name, EMPLOYEE.FNAME
FROM	    Company2  C2
INNER JOIN  Department  D
ON C2.Dept = D.Dept_id
INNER JOIN  EMPLOYEE
ON C2.Emp_ID = EMPLOYEE.EMPID
-----------------[/left][left]---2 ----
select e.FNAME
, NVL(( select SUM(c1.SAL) FROM Company1 c1 where c1.Emp_ID=e.EMPID ),0)
+
NVL((select SUM(c2.SAL) FROM Company2 c2 where c2.Emp_ID=e.EMPID ),0)
From EMPLOYEE e[/left][left]


------------------------------------

Amr Waheed

Senior DBA

01004943173

Amr.Waheed@Gmail.com


#5 amrw2006

amrw2006

    عضو

  • الأعضــاء
  • 33 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 13 October 2011 - 01:33 AM

بإفتراض وجود جدول الموظفين ( فقط لسهوله التعامل مع اسم بدلا من ID )

Employee table data

EMPID FNAME LNAME
1 MICHAEL POLAND
2 JIM KENNEDY
3 JAMES SMITH
4 ADAM ACKERMAN
5 MARTHA LEDERER
6 MARIAH MANDEZ




[/left][left]--- 1----[/left][left]SELECT	 'Company1'  CompanyName, D.Dept_name  Dept_Name, EMPLOYEE.FNAME
FROM		 Company1  C1
INNER JOIN   Department  D
ON C1.Dept = D.Dept_id
INNER JOIN   EMPLOYEE
ON C1.Emp_ID = EMPLOYEE.EMPID
UNION
SELECT	 'Company2'  , D.Dept_name  Dept_Name, EMPLOYEE.FNAME
FROM	    Company2  C2
INNER JOIN  Department  D
ON C2.Dept = D.Dept_id
INNER JOIN  EMPLOYEE
ON C2.Emp_ID = EMPLOYEE.EMPID
-----------------[/left][left]---2 ----
select e.FNAME
, NVL(( select SUM(c1.SAL) FROM Company1 c1 where c1.Emp_ID=e.EMPID ),0)
+
NVL((select SUM(c2.SAL) FROM Company2 c2 where c2.Emp_ID=e.EMPID ),0)
From EMPLOYEE e[/left][left]


------------------------------------

Amr Waheed

Senior DBA

01004943173

Amr.Waheed@Gmail.com


#6 eng_saeed2007

eng_saeed2007

    عضو

  • الأعضــاء
  • 39 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 13 October 2011 - 07:42 AM

السلام عليكم ورحمه الله وبركاته...
طالما هو سؤال اتسالك فى انترفيو ما تتعبيش نفسك وتحاولى تجاوبى عليه دلوقتى واطمنك ان اللى سالك السؤال مش فاهم هو بيسال فى ايه اصلا
وربنا يوفقك لشركه بس تكون كويسه ان شاء الله بيعرفوا همه بيعملوا ايه
وانا مش حاحاول حته احله لانه سؤال مش منطقى اصلا باى حال من الاحوال

#7 amrw2006

amrw2006

    عضو

  • الأعضــاء
  • 33 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 13 October 2011 - 02:37 PM

السلام عليكم ورحمه الله وبركاته...
طالما هو سؤال اتسالك فى انترفيو ما تتعبيش نفسك وتحاولى تجاوبى عليه دلوقتى واطمنك ان اللى سالك السؤال مش فاهم هو بيسال فى ايه اصلا
وربنا يوفقك لشركه بس تكون كويسه ان شاء الله بيعرفوا همه بيعملوا ايه
وانا مش حاحاول حته احله لانه سؤال مش منطقى اصلا باى حال من الاحوال


المهندس العزيز
بالنسبه للسؤال حضرتك بتقول انه غلط - انا الحقيقه مش فاهم وجه الخطأ فى السؤال
لو عشان تكرار جدول للشركات - فده لا يجعل السؤال خطأ - لان هناك اتجاهات عديدة لتصميم جداول قواعد البيانات
و طبعا الطريقة السائدة لمدة طويلة كانت عدم تكرار بيانات و ال Normalization و هو يعنى عدم تكرار البيانات الى الحد النهائى - و يعطى ميزة صغر مساحة الداتا بيز و هو العامل الاهم فى فترة كانت ال Storage غالية جدا فيها
لكن بطبيعة عملى على مختلف ال ERP's
منها أوراكل و مايكروسوفت RMS and GP
الشركات الكبيرة دى عملت تقنيات أخرى تقوم على ال DENORMALIZATION
يعنى السماح بوجود بيانات مكررة او غير مربوطه فى جدول واحد -- و هو يأخذ مساحة أكبر و لكنه يسهل العمل على استخراج البيانات بصورة قد تكون اسرع و اكثر تصنيفا

لا أحب أن أطيل و لكنى من مؤيدى ال Normalization مثلك تمام

و لكن الغرض من السؤال هو عمل جملة ال Select المطلوبه و ذلك بافتراض انك فى شركة بها تصميم قاعدة البيانات هو كما فى السؤال و ده وارد جدا جدا سواء انه كان صحيح او غير مصمم جيدا

و الحقيقة الجمل المطلوبه فيه فكرة كويسه فى استخدام
In-line query
Group by
Union
NVL Function
و قد قمت بافتراض الاجابه عن الاسألة فى مداخله سابقة

و اتشرف بتعليقكم الكريم لنستفيد جميعا

شكرا

------------------------------------

Amr Waheed

Senior DBA

01004943173

Amr.Waheed@Gmail.com