الانتقال إلى المحتوى
View in the app

A better way to browse. Learn more.

مجموعة مستخدمي أوراكل العربية

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

كتابة استعلام اكثر من Count ومن عدة جداول

Featured Replies

بتاريخ:
السلام عليكم ورحمة الله وبركاته
 
الاخوة الكرام 
 
احتاج مساعدة في عمل استعلام 
 
حاولت كثيرا ولكني فشلت ارجوا ممن لديه الخبرة ان يساعدني  
 
المطلوب كالتالي: 
 
 
اظهر عدد المواعيد لكل شهر و عدد المرضى الذين تم الكشف عليهم في نفس الشهر وعدد الامراض التي تم تشخيصها ايضا في نفس الشهر 
 
محاولتي : 
SELECT TO_CHAR(APP.DATEOFAPPOINTMENT,'MONTH'), COUNT(APP.APPOINTMENTID) AS "Number of Appointments", COUNT(PAT.PATIENTID) AS "Number of Patients", COUNT(DIA.DISEASEID) AS "Number of Diseases"

FROM APPOINTMENT APP, PATIENT PAT, DIAGNOSED DIA, DISEASE DIS

GROUP BY TO_CHAR(APP.DATEOFAPPOINTMENT,'MONTH');

حاولت ايضا من خلال الاستعلامات الفرعية ولم انجح

 
 
APPOINTMENT  جدول المواعيد
----------------------------------------
APPOINTMENTID 
DATEOFAPPOINTMENT 
TIMEOFAPPOINTMENT
DOCTORID 
PATIENTID 
DONE 
CONSULTATION_ROOMNO 
 
 
PATIENT جدول المرضى
-----------------------------------------
PATIENTID 
SURNAME
GIVEN 
DOB 
SEX
PHONEHOME 
PHONEWORK 
PHONEFAX 
ADDRESS 
SUBURB 
STATE 
POSTCODE 
 
DISEASE جدول الامراض
-----------------------------------------
DISEASEID 
NAME
CLASSIFICATIONID
 
DIAGNOSED جدول التشخيص
----------------------------------------- -------- ----------------------------
DIAGNOSEDID 
APPOINTMENTID
DISEASEID 

 

بتاريخ:

انت مش عامل relations ليه في الكويرى  ؟

بتاريخ:
  • كاتب الموضوع

انت مش عامل relations ليه في الكويرى  ؟

 اهلا اخي اسلام 

 

قمت بعمل ربط بين الجداول ولكني نسيت كتابته هنا مع ذلك يظهر رقم موحد لجميع الاكاونت

 

الاستعلام بعد التعديل: 

SELECT TO_CHAR(APP.DATEOFAPPOINTMENT,'MONTH'), COUNT(APP.APPOINTMENTID) AS "Number of Appointments", COUNT(PAT.PATIENTID) AS "Number of Patients", COUNT(DIA.DISEASEID) AS "Number of Diseases"

FROM APPOINTMENT APP, PATIENT PAT, DIAGNOSED DIA, DISEASE DIS
WHERE APP.PATIENTID = PAT.PATIENTID
AND DIA.APPOINTMENTID = APP.APPOINTMENTID
AND DIS.DISEASEID = DIA.DISEASEID
GROUP BY TO_CHAR(APP.DATEOFAPPOINTMENT,'MONTH');

تم تعديل بواسطة bwanty

بتاريخ:

 


SELECT COUNT(APP.APPOINTMENTID),COUNT(PAT.PATIENTID),COUNT(DIA.DISEASEID)
FROM APPOINTMENT APP, PATIENT PAT, DIAGNOSED DIA, DISEASE DIS
WHERE PAT.PATIENTID = APP.PATIENTID
AND DIA.DISEASEID = DIS.DISEASEID
GROUP BY TO_CHAR(APP.DATEOFAPPOINTMENT,'MONTH');

 

بتاريخ:
  • كاتب الموضوع
SELECT  COUNT(APP.APPOINTMENTID),COUNT(PAT.PATIENTID),COUNT(DIA.DISEASEID)
FROM APPOINTMENT APP, PATIENT PAT, DIAGNOSED DIA, DISEASE DIS
WHERE PAT.PATIENTID = APP.PATIENTID
AND DIA.DISEASEID = DIS.DISEASEID
GROUP BY TO_CHAR(APP.DATEOFAPPOINTMENT,'MONTH');

 

مع الاسف الاستعلام يعطي نفس الرقم لكل العدادات

 

الحل بوجود استعلامات فرعية وتوصلت للنتيجة الصحيحة لكل تظهر صفوف متكررة حوالي 144 صف وانا اريد فقط 12 شهر

SELECT Month, Appointments,  Diseases
FROM (SELECT  TO_CHAR(APP.dateofappointment,'Month') AS Month, COUNT(*) AS Appointments FROM APPOINTMENT APP WHERE APP.dateofappointment BETWEEN '01-JAN-2010' AND '31-DEC-2010' GROUP BY TO_CHAR(APP.dateofappointment,'Month')),
(SELECT TO_CHAR(APP.dateofappointment,'Month'), COUNT(*) AS Diseases 
FROM DISEASE DIS, DIAGNOSED DIA, APPOINTMENT APP
WHERE  APP.appointmentid = DIA.appointmentid
AND DIS.diseaseid = DIA.diseaseid
GROUP BY TO_CHAR(APP.dateofappointment,'Month') 
)
GROUP BY Month, Appointments,  Diseases;
بتاريخ:
  • كاتب الموضوع

الشكر الجزيل لك اخي miash80 لمحاولة المساعدة

 

 

بتاريخ:

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

اخي الكريم

 

قم بتجربة استخدام FULL JOIN و FULL OUTER JOIN في الكود

 

كما يمكن استخدام FULL JOIN لعرض جميع البيانات الموجودة في الجدول الأول والموجودة في الجدول الثاني

SQL> INSERT INTO EMP (empno ,ename ) VALUES(1,'AAA' ) ; SQL>SELECT empno , ename , dept.deptno , dname FROM emp FULL JOIN dept ON emp.deptno = dept.deptno ;

 

كما يمكن استخدام FULL OUTER JOIN لعرض جميع البيانات الموجودة في الجدول الأول والموجودة في الجدول الثاني

SQL>SELECT empno , ename , deptno , dname FROM emp FULL OUTER JOIN dept USING (deptno) ;

 

 

جزاك الله كل خير

تم تعديل بواسطة jamal_rrkk

بتاريخ:

السلام عليكم
 
أخي تفضل الـ Query

SELECT Trunc (APP.DATEOFAPPOINTMENT , 'MM') Month , Count(APP.APPOINTMENTID) Total_Appointments ,
Count (Distinct APP.PATIENTID ) total_Patients ,Count (Distinct DIA.DISEASEID ) Total_Diseases
FROM APPOINTMENT APP, DIAGNOSED DIA
WHERE APP.APPOINTMENTID = DIA.APPOINTMENTID
GROUP BY Trunc (APP.DATEOFAPPOINTMENT , 'MM');

الاستعلام الذي كتبته في البداية سليم و لكن ينقصه فقط استخدام distinct
و اعتقد انه يكفي استخدام  جداول APPOINTMENT و DIAGNOSED حيث يوجد بهم كل البيانات التي تريدها  (عدد المواعيد و عدد المرضى و عدد الامراض)
 
بالتوفيق

تم تعديل بواسطة AElsaber

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

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

زائر
أضف رد على هذا الموضوع...

برجاء الإنتباه

بإستخدامك للموقع فأنت تتعهد بالموافقة على هذه البنود: سياسة الخصوصية

Account

Navigation

البحث

إعداد إشعارات المتصفح الفورية

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.