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

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

صورة
- - - - -

ممكن مساعدة فى أمر select


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

#1 التميمية

التميمية

    عضو

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

تاريخ المشاركة 18 August 2007 - 01:57 AM

عندي عدة جداول مخزنة بالاوراكل في قاعدة مستقلة والمطلوب

Which manufacturer gave Rolling Thunder the largest discount on an order in 2003?

The information we need comes from Manufacturer & PurchaseOrder tables.
We need the attributes : ManufacturerID, ManufacturerName,
OrderDate, Discount

The WHERE condition is the year 2003, which means PurchaseOrder OrderDate is Between #1/1/2003# And #12/31/2003#
To find out the largest discount, you can sort Discount attribute in Descending order

أنا كتبت هذا الكود لكن للأسف فيه خطأ ونقص يظهر لي

ORA-00918: column ambiguously defined

والكود الذي كتبت

SELECT ManufacturerID, ManufacturerName,OrderDate, Discount
FROM Manufacturer INNER JOIN PurchaseOrder
ON Manufacturer.ManufacturerID = PurchaseOrder.ManufacturerID
WHERE OrderDate Between '1/1/2003' And '12/31/2003'
ORDER BY Discount DESC;

أرجو المساعدة :rolleyes:

#2 التميمية

التميمية

    عضو

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

تاريخ المشاركة 18 August 2007 - 02:26 AM

حطيت الكود كذا
SELECT Manufacturer.ManufacturerID, ManufacturerName, OrderDate, Discount
FROM Manufacturer, PurchaseOrder
WHERE Manufacturer.ManufacturerID = PurchaseOrder.ManufacturerID
AND OrderDate Between '1/1/2002' AND '31/12/2003';
ORDER BY Discount DESC;

طلع لي ORA-00911: invalid character
!!

#3 Amgad

Amgad

    مشرف عام ومشرف قسم تحليل النظم

  • الفريق الإداري
  • 4,558 مشاركة
  • الاسم الأول:امجد
  • اسم العائلة:حلمي
  • البـلـد: Country Flag
  • المنصب الحالي:Business Systems Analyst at al Fanar Co. Riyadh KSA

تاريخ المشاركة 18 August 2007 - 03:10 AM

يتم وضع علامة ;
فى نهاية الامر .. وليس فى المنتصف ..

وان كنت تستعمل oracle 10 XE يمكنك عدم اضافة ال ;
فى نهاية الامر

فيما يتعلق بالعام 2003 .. ستحتاج تعديل التاريخ from 1-1-2003 وليس 1-1-2002

select manufacturer.manufacturerid , manufacturername , orderdate,discount
from purchaseorder , manufacturer
where purchaseorder.manufacturerid = manufacturer.manufacturerid
and orderdate between '01/01/2003' and '31/12/2003' 
order by discount desc

لا إله إلا الله الحليم الكريم
لا اله إلا الله العلى العظيم
لا اله إلا الله رب السماوات السبع و رب العرش العظيم
‏اللهم ارزقني قبل الموت توبة وعند الموت شهادة وبعد الموت جنة
اللهم ارزقني حسن الخاتمة
اللهم هون علينا سكرات الموت ... ونور علينا قبورنا
اللهم ارزقني الموت وأنا ساجد لك يا ارحم الراحمين
اللهم ثبتني عند سؤال الملكين
اللهم اجعل قبري روضة من رياض الجنة ولا تجعله حفرة من حفر النار
اللهم اني اعوذ بك من فتن الدنيا
اللهم ارحم ابائنا وامهاتنا واغفر لهما وتجاوز عن سيئاتهما وادخلهم فسيح جناتك ... والحقنا بهما يا رب العالمين
اللهم ارحم موتانا وموتى المسلمين واشفي مرضانا ومرضى المسلمين
اللهم اغفر للمسلمين والمسلمات والمؤمنين والمؤمنات الأحياء منهم والأموات
وبارك اللهم على سيدنا محمد صلى الله عليه وسلم
اللهم آمين ... اللهم آمين ... اللهم آمين


....


#4 التميمية

التميمية

    عضو

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

تاريخ المشاركة 18 August 2007 - 08:06 AM

ما تقصر أخي الكريم
وسؤال : هل ممكن تختلف صياغة الأكواد والنتيجة تكون واحدة ؟
أنا مبتدئة جدا فتحملني
وهذا سؤال والمطلوب منه في الأسفل
إذا مافيه ماتع تساعدني وأدعو لك في ظهر الغيب

* The information we need comes from Manufacturer & Component tables.
* We need the attributes : ComponentID, ManufacturerName,
ProductNumber, Year, Category
* We need to create a NEW Calculated Attribute to find out the value of all the bikes available in stock. Now if we want to find the money sitting on the shelf (cost of quantity on hand) we will need to mutliply EstimatedCost * QuantityOnhand. This new attribute will give us the cost of the quantity of one product, we need the SUM of this attribute
* If you are going to use an aggregate function like SUM, you need to use GroupBy. Remember that the results must be grouped by all the attributes you have chosen in the SELECT part of your statement
* To find out the most money, you sort the NEW Calculated Attribute attribute in Descending order

المطلوب هو تحديد العنصر الاكثر كلفة والموجود بالمخازن (الاكثر كلفه بمعنى الكمية المتوفرة * السعر التقريبي)

[EstimatedCost]*[QuantityOnHand]

حاصل هذه العملية ينتج عنه تكلفة القطعة الواحدة فقط ولكن اذا اضفنا اليه الدالة SUM سينتج عنه تكلفه كافة القطع

وبالطبع كما اوضحنا في حالة استخدام الدالة SUM لابد من اضافة Group by

وكذلك لابد من الربط بين الجدولين باستخدام INNER JOIN

وفي النهاية يتم فرزالبيانات على اساس هذا العمود الحسابي الجديد ORDER BY

#5 Amgad

Amgad

    مشرف عام ومشرف قسم تحليل النظم

  • الفريق الإداري
  • 4,558 مشاركة
  • الاسم الأول:امجد
  • اسم العائلة:حلمي
  • البـلـد: Country Flag
  • المنصب الحالي:Business Systems Analyst at al Fanar Co. Riyadh KSA

تاريخ المشاركة 19 August 2007 - 01:39 AM

select component.componentid , manufacturername , productnumber, year , category ,  sum( estimatedcost* quantityonhand ) as SittingOnShelf

from component , manufacturer

where component.manufacturerid = manufacturer.manufacturerid 

group by component.componentid  , manufacturername , productnumber, year , category  

order by SittingOnShelf desc 


لا إله إلا الله الحليم الكريم
لا اله إلا الله العلى العظيم
لا اله إلا الله رب السماوات السبع و رب العرش العظيم
‏اللهم ارزقني قبل الموت توبة وعند الموت شهادة وبعد الموت جنة
اللهم ارزقني حسن الخاتمة
اللهم هون علينا سكرات الموت ... ونور علينا قبورنا
اللهم ارزقني الموت وأنا ساجد لك يا ارحم الراحمين
اللهم ثبتني عند سؤال الملكين
اللهم اجعل قبري روضة من رياض الجنة ولا تجعله حفرة من حفر النار
اللهم اني اعوذ بك من فتن الدنيا
اللهم ارحم ابائنا وامهاتنا واغفر لهما وتجاوز عن سيئاتهما وادخلهم فسيح جناتك ... والحقنا بهما يا رب العالمين
اللهم ارحم موتانا وموتى المسلمين واشفي مرضانا ومرضى المسلمين
اللهم اغفر للمسلمين والمسلمات والمؤمنين والمؤمنات الأحياء منهم والأموات
وبارك اللهم على سيدنا محمد صلى الله عليه وسلم
اللهم آمين ... اللهم آمين ... اللهم آمين


....


#6 التميمية

التميمية

    عضو

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

تاريخ المشاركة 22 August 2007 - 06:49 PM

حطيت الكود هذا طلع لي ORA-01722: invalid number ؟؟

#7 Amgad

Amgad

    مشرف عام ومشرف قسم تحليل النظم

  • الفريق الإداري
  • 4,558 مشاركة
  • الاسم الأول:امجد
  • اسم العائلة:حلمي
  • البـلـد: Country Flag
  • المنصب الحالي:Business Systems Analyst at al Fanar Co. Riyadh KSA

تاريخ المشاركة 23 August 2007 - 04:50 AM

اعتقد انه .. يوجد مشكلة بالبيانات بالجداول ..
هل البيانات مدخلة بطريقه صحيحه بالجداول ؟؟

ORA-01722 

ORA-01722invalid number 

Cause:The attempted conversion of a character string to a number failed because the character string was not a valid numeric literal. Only numeric fields or character fields containing numeric data may be used in arithmetic functions or expressions. Only numeric fields may be added to or subtracted from dates. 

Action:Check the character strings in the function or expression; make sure they contain only numbers, a sign, a decimal point, and the character "E" or "e", then retry the operation. 

لا إله إلا الله الحليم الكريم
لا اله إلا الله العلى العظيم
لا اله إلا الله رب السماوات السبع و رب العرش العظيم
‏اللهم ارزقني قبل الموت توبة وعند الموت شهادة وبعد الموت جنة
اللهم ارزقني حسن الخاتمة
اللهم هون علينا سكرات الموت ... ونور علينا قبورنا
اللهم ارزقني الموت وأنا ساجد لك يا ارحم الراحمين
اللهم ثبتني عند سؤال الملكين
اللهم اجعل قبري روضة من رياض الجنة ولا تجعله حفرة من حفر النار
اللهم اني اعوذ بك من فتن الدنيا
اللهم ارحم ابائنا وامهاتنا واغفر لهما وتجاوز عن سيئاتهما وادخلهم فسيح جناتك ... والحقنا بهما يا رب العالمين
اللهم ارحم موتانا وموتى المسلمين واشفي مرضانا ومرضى المسلمين
اللهم اغفر للمسلمين والمسلمات والمؤمنين والمؤمنات الأحياء منهم والأموات
وبارك اللهم على سيدنا محمد صلى الله عليه وسلم
اللهم آمين ... اللهم آمين ... اللهم آمين


....