الانتقال إلى المحتوى
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.

ارجو توضيح كيفية ربط ثلاث جداول ؟

Featured Replies

بتاريخ:

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

لو فرضنا لدينا الجدول a فيه جميع الموظفين وارقامهم واسمائهم
والجدول b فيه ارقام الموظفين المرضى
والجدول c فيه ارقام الموظفين المسافرين

ونريد استعلام يظهر اسماء الموظفين المرضى والمسافرين , كيف تتم عمليه الربط اذا اردنا الربط الي الجمله FORM ؟

مثلا انا حاولت كالتالي

[left]
select ................
FROM
(
b FULL OUTER JOIN c 
ON
b.employee_no=c.employee.no
)
LEFT OUTER JOIN a
ON
c.employee_no=a.employee_no[/left]



ولكن هذه الطريقة لم تنجح حيث انها اخرجت فقط اسماء الموظفين المسافرين

بتاريخ:

أن شاء الله اني اوفق الى الاجابة اصحيحة

select  number ,ename , dept,salary
from a,b,c
where a.number=b.ename 
and 
a.dept=c.salary;

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

لا اعتقد ان اجابتك من الممكن ان تعمل ياعزيزي , أرجو ممن لديه الحل اخبارنا
حتى ولو كان باستخدام اي طريقة ربط من where او غيره

بتاريخ:

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

جرب هذا الكود..

select a.emp_name
from a,b,c
where a.emp_id in 
( select b.emp_id from b,c where b.emp_id=c.emp_id);



أتمنى تكون الإجابة صحيحة ..

بتاريخ:

السلام عليكم

اخي الكريم , لكي تتمكن من استرجاع المعلومات من اكثر من جدول واحد يجب ان يكون تصميم هذه الجداول صحيحا بمعنا ان يكون تصميم ال ERD مبني على اساس ربط الجداول بصوره منطقيه مع بعض باستخدام المفاتيح الاوليه والثانويه او PK and FK وبهذه الحاله تستطيع استرجاع المعلومات من الجداول من خلال استخدام شرط ربط صحيح وعاده يكون بصوره مساوه المفتاحين الاولي والثانوي في عباره ال where وهنالك قاعده عامه هو ان شروط الربط او ال join condition يجب ان تكون على الاقل n-1 من الجداول, على فرش ان n هي عدد الجداول المراد استرجاع المعلومات منها.

بالنسبه للمثال الذي تسال عنه فهو غير صحيح لان الجداول اصلا غير مكونه تكوين صحيح, يجب ان يكون هنالك جدول واحد لكل الموضفين مهما كانت حالتهم مسافرين او غير ذلك,

فيما يلي مثال ساقوم باسترجاع بيانات من 3 جداول

select employee_id, last_name, department_id, department_name, location_id
from employees, departments, locations
where employees.department_id = departments.department_id
and departments.department_id = locations.department_id

على اعتبار ان رقم الموظف واسمه ورقم القسم هي من جدول الموظفين واسم القسم هي من جدول الاقسام واسم الموقع هي من جدول المواقع

مع الشكر

علي غزاله
Oracle Developer
السليمانيه - العراق

  • بعد 3 أسابيع...
بتاريخ:

Creating Three-Way Joins with the ON Clause



SELECT employee_id, city, department_name
FROM   employees e 
JOIN   departments d
ON	 d.department_id = e.department_id 
JOIN   locations l
ON	 d.location_id = l.location_id;
  • بعد 3 أسابيع...
بتاريخ:

ده كود ربط بين 3 جداول
جدول الموضفين مع الأدارات وجدول ترتيب المرتبات

select e.ename,e.sal,d.dname,s.grade
from emp e,dept d,salgrade s
where e.deptno=d.deptno and e.sal between losal and hisal;

  • بعد 4 شهور...
بتاريخ:

اعتقد ان الحل الصحيح هو :-



select a.name
from a join b on a.id = b.id

join c on a.id = c.id

بتاريخ:

السلام عليكم.

أنا أؤيد رأي الأخ عبود وأرى أيضاً أن تكوين الثلاث جداول غير منطقي حيث أن البيانات تكاد تكوم متماثله في الثلاث جداول ولا يفرق بينهما إلا الحاله سواء كان مريض أو مسافر أو أياً كان. فالجدول الأول حسب كلامك به بيانات كل الموظفين سواء المرضى أو المسافرين أو أي حاله أخرى. ثم بعد ذلك تقوم بعمل جدول تحدد فيه الموظفين المرضى فقط والموجودين أساساًَ في الجدول الأول. وتقوم بإنشاء جدول آخر تكتب فيه الموظفين المسافرين والموجودين أيضاً في الجدول الأول ، أي أن الجداول الثاني والثالث ليسوا إلا حاله من الجدول الأول. في رأيي هذا خطأ منطقي وذلك للآتي:
أولاً: إذا نظرت بدقه إلي العلاقه بين الجدول الأول الثاني وبين الجدول الأول والثالث ستجد كلاهما علاقة one to one وهذه العلاقه غالباً ما يتم حلها بدمج علاقة الجدولين في جدول واحد ويتم التمييز بينهما بإنشاء عمود آخر للتمييز بين بيانات كلا الجدولين(في حالتك تضيف عمود وتسميه الحاله وتحدد سواء مريض او مسافر أو أياً كان). في حالات نادره نستعين بعلاقة one to one ولكن حالتك هذه لا تحتاجها.

ثانياً: إنشاء جداول بهذا الشكل يصعب عملية الصيانه والتطوير مستقبلياً.

إن إنشاء جداول البيانات بهذا الشكل يصعب عليك عملية الإستعلام والتعامل مع البيانات وأظن أنك واجهتها الآن. إن ال ERD الناجح والمنطقي يسهل عملية ال Data Flow وبذلك تسهل عملية الصيانه والمتابعه للبرنامج وكذلك التطوير به.

أما إذا كان لابد من تواجد الجداول بهذا الشكل فجملة الإستعلام تكون كالآتي:

SELECT employee_id
FROM a
WHERE EXISTS
 (SELECT employee_id
  FROM B
  UNION
  SELECT employee_id
  FROM C);



بالتوفيق والنجاح...

  • بعد 1 سنة...
بتاريخ:

اخي اعمل فيو تجمع فيه بين جدولين
وبعدين اجمع بين الفيو والجدول الثالث
ان شاء الله تزبط
تقبل احترامي

بتاريخ:

select employee_id, last_name, department_id, department_name, location_id
from employees, departments, locations
where employees.department_id = departments.department_id and departments.department_id = locations.department_id


هذا الجواب الصحيح..
شكرا لكاتبه

بتاريخ:

SELECT employee_id, city, department_name
FROM employees e 
JOIN departments d ON d.department_id = e.department_id 
JOIN locations l ON d.location_id = l.location_id;

ودي كمان صح

بتاريخ:

يااخوان لازم نفرق بين استعراض او استخراج البيانات من ثلاث جداول والربط بين الجداول في تصميم الجداول

اذا كان الغرض هو استخراج البيانات من الجداول الثلاثه فهي كما في العلاقات الغير متساوية

اعرض اسم الموظف وإدارته والدرجة الوظيفية والعاملين بإدارتي المبيعات والحسابات


SELECT ENAME,GRADE,DNAME
FROM EMP E,SALGRADE S,DEPT D 
WHERE E.DEPTNO=D.DEPTNO AND SAL BETWEEN LOSAL AND HISAL AND DNAME IN('ACCOUNTING','SALES') ;



اما اذا كان الربط بين ثلاث جداول فيكون مثلا عندنا شاشه فيه الدول المحافظات المدن والاحياء

-- REGION  (Table) جدول المدن 
--
CREATE TABLE OMAR.REGION
(
 COD        NUMBER,
 ENAME      VARCHAR2(25 BYTE),
 COUNT_COD  NUMBER,
 CONSTRAINT REGION_COD_PK
PRIMARY KEY
(COD),
 CONSTRAINT REGION_COUNT_COD_FK 
FOREIGN KEY (COUNT_COD) 
REFERENCES OMAR.COUNTRY (COD) ON DELETE CASCADE
);

--
-- AREA  (Table) جدول الاحياء 
--
CREATE TABLE OMAR.AREA
(
 COD        NUMBER,
 ENAME      VARCHAR2(25 BYTE),
 COUNT_COD  NUMBER,
 REG_COD    NUMBER,
 CONSTRAINT AREA_COUNT_COD_FK1 
FOREIGN KEY (COUNT_COD) 
REFERENCES OMAR.COUNTRY (COD) ON DELETE CASCADE,
 CONSTRAINT AREA_REG_COD_FK2 
FOREIGN KEY (REG_COD) 
REFERENCES OMAR.REGION (COD) ON DELETE CASCADE
);
-- COUNTRY  (Table) جدول الدول
--
CREATE TABLE OMAR.COUNTRY
(
 COD    NUMBER,
 ENAME  VARCHAR2(25 BYTE),
 CONSTRAINT COUNTRY_COD_PK
PRIMARY KEY
(COD)
);

_______.doc

بتاريخ:

أنا مع رأي الأخ الكونت
إنك تعمل فيو تربط فيها بين جدولين ، بس تاخد بالك من حاجة :

الفيو والجدول الثالث اللي هتربط بينهم يكون بينهم عمود مشترك
يعني في واحد برايماري ويكون في التاني فورين كي
يعني ببساطة هو الإيكو جوين وهو أسهل طريقة للربط

بتاريخ:

SELECT E.NAME
FROM EMPLOYEE E, SICK S ,TRAVELLER T
WHERE E.EMPNO = S.EMPNO OR E.EMPNO = T.EMPNO ;

  • بعد 2 أسابيع...
بتاريخ:

عزيزي الاجابه اسهل مما تتوقع
وهي


Select * from a
where a.empno in(select b.empno from b union select c.empno from c)
  • بعد 7 سنة...
بتاريخ:

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

انا عضو جديد

لوفرضنا ان معنا ثلاثة جداول وهي A ,B,D

والجدول A له عناصر كالتالي 1- رقمA   

2- اسم A

واريد وضع رقمA مفتاح اجنبي لـ الجدول B والجدول D

 كيف تتم العملية ... ارجو منكم التعاون

ولكم جزيل الشكر....

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

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

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

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

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

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.