بسم الله الرحمن الرحيم
الأخوة الأعزاء
اريد ان اقرأ بيانات لجدولين مختلفين على اكثر من مستخدم بمعنى دمج بيانات جدولين فى جدول ثالث مع العلم ان كل جدول على مستخدم مختلف
جزاكم الله خيرا
بسم الله الرحمن الرحيم
الأخوة الأعزاء
اريد ان اقرأ بيانات لجدولين مختلفين على اكثر من مستخدم بمعنى دمج بيانات جدولين فى جدول ثالث مع العلم ان كل جدول على مستخدم مختلف
جزاكم الله خيرا
السلام عليكم ورحمه الله وبركاته
الاخ علاء
بالنسبه لسؤالك الخاص بقراءه بيانات من جدولين مختلفين
فهناك عده طرق ومنها :
لعرض بيانات من جدولين
مع ملاحظه : وجود تشابه في اسماء الاعمده في الجدولين .
select empno,ename,emp.dept,dept.deptno,deptno,dname,loc
from emp,dept
;(where (emp.deptno = dept.deptno
لعرض بيانات من جدولين
مع ملاحظه : لا يوجد تشابه في اسماء اعمده الجدولين ولكن هناك يمكن إعتبار وجود علاقه بينهم وهي الراتب .
select empno , ename , sal , grade
from emp , salgrade
;where sal between losal and hisal
- لعرض بيانات من جدول واحد واعتباره جدوليين والربط بينهم :-
select emps.empno , emps.ename , mgr , mgrs.empno , mgrs.ename
from emp emps , emp mgrs
;where emps.mgr = mgrs.empno
كما يمكن عمل view من اكثر من جدول ليعتبر كجدول ثالث وبه بيانات من جدولين :
SQL>create view our_view
as select empno , ename , sal , emp.deptno , dname , loc
from emp , dept
;where emp.deptno = dept.deptno
كما يمكن عمل view من 3 او 4 او ........ اي عدد من الجداول .
ولجعل ال view للقراءه فقط ، اي لايمكن ادخال بيانات منه او حذف بيانات منه فقط للعرض
نضيف الامر التالي عند انشاءه في اخر شي والامر هو
with read only
مثال
SQL>create view view1
as select empno , ename , sal , deptno
from emp
;where deptno = 10 with read only
ارجوا ان اكون قد وفقت في حل سؤالك
عمر باعقيل
المدينه المنوره
بسم الله الرحمن الرحيم
1- يبدو أن سؤالى غير مفهوم فنفترض مثلا عندى جدول T موجود للمستخدمين user1,user2,user3 وأريد أن أخذ البيانات الموجودة فى الجدول من user1,user2 ولأكتبها فى user3
2- لدى ملف للمقارنة بين sql فى الأكسس والآوراكل لمن أراد ولكن كيف أبعثه إليكم ليكون متاح للجميع
= == == = == = = = ==
لا إله إلا إنت سبحانك إنى كنت من الظالمين
أولا لقراءة جدول بيانات خاص بمستخدم معين عن طريق مستخدم آخر، يجب على مدير قاعدة البينات او المستخدم مالك الجدول أن يسمح بذلك عن طريق ال sql*plus وكالاتي
GRANT SELECT ON table_name TO oracle_user
مع تغيير اسم المستخدم وإسم الجدول، كما يمكن تحديد صلاحيات أخرى غير القراءة فقط SELECT. وهنا يجب ان يكون للمستخدم user3 صلاحية قراءة الجدول T المملوك لكل من المستخدمين user1,user2 ثم تشغيل الأمر على مرتين و كالآتي:
insert into T
(select * from user1.t(
;
commit;
insert into T
(select * from user2.t(
commit;
هذا إذا كنت تريد ادخال كل المعلومات الموجودة في كلى الجدولين وبدون تنقيح، وإلا فعليك إستخدام الأمر where، أو دمج العبارتين إذا كان هناك ربط مطلوب بين الجدولين في المستخدمين user1,user2 بأسلوب معين .
أرجو أن أكون فهمت سؤالك بصورة صحيحة، وأن تكون قد فهمت ردي
بعد التحية
أولا يجب على كل من المستخدمين (user1)(user2) ان يعطوا الصلاحيات للمستخدم (user3)كالتالـي :-
grant select on emp to user3;
grant select on dept to user3;
بعد ذلك يستطيع المستخدم الدخول على (tables) مباشرة كالتالي
select *from user1.emp;
select *from user2.dept;
بعد ذلك يمكن للمستخدم(user3) اللذي منح هذه الصلاحيات ان ينشئ جدول كالتـــالي :-
create table T as select e.empno,e.ename,d.deptno,d.loc
from user1.emp e,user2.dept d
where e.deptno=d.deptno;
بالتالي ماتحتاجه هو الصلاحيات و ال (join) للربط بين الجدولين
والله أعـــلم ....
محمدالشنقيطي
هذا الموضوع مغلق.