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

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

صورة
- - - - -

ما هى فائدة where فى الجملة التالية؟


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

#1 أبو عمر

أبو عمر

    عضو

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

تاريخ المشاركة 31 January 2005 - 01:26 AM

insert into (select employee_id, last_name, email, hire_date, job_id, salary, department_id
from employees where department_id = 50 )

values ( 99999, 'Taylor', 'Dtaylor' , to_date('07-jun-99','dd-mon-rr'),
'ST_CLERK' , 5000 , 50);

السادة الكرام .. هل منكم من يدلنى على فائدة جملة where فى الجملة السابقة .. أنا شايف ان ملهاش لازمة !!!؟؟؟
على فكرة المثال موجود فى introduction to oracle9i: SQL 8-23
:unsure:
سبحان الله وبحمده .. سبحان الله العظيم

#2 mmerwa

mmerwa

    عضو

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

تاريخ المشاركة 31 January 2005 - 02:59 PM

as u said
this condition is not meanfull in this case,
but i think they make it 2 mention u that u can use this condition WITH CHECK OPTION in the next example may B
:unsure:

anyway, "introduction to oracle9i: SQL" had some little mistakes:
Ckeck NVL2 convert function description syntax P(3-48) u'll find another mistake
empr3 is the value returned if expr2 is null
so it had 2B expr1 instead of expr2

another one
Check P(6-15), last line

ALL means less than the maximum. >ALL means grator than the minimum>
Correct it to
ALL means less than the minimum. >ALL means grator than the maximum>

ALSO ANOTHER BAAAD ONE @ Page No 4-31
Joins - Comparing SQL: 1999 to Oracle Syntax

Non-Equi-Join ---> Join Using
so it had 2B Join ON instead of Join USING
Mohamed M. Erwa

#3 عبدالله أسعد

عبدالله أسعد

    مشرف سابق وعضو مميز

  • المجموعة الماسية
  • 1,194 مشاركة

تاريخ المشاركة 31 January 2005 - 03:16 PM

The first statement will insert all those record whose deparment id = 50
Second statement will create one record only
removing where clause from select statement will insert all record


الدعاء نجى يونس وأهلك قوم نوح ورفع قدر سليمان وأظهر دين محمد عليه الصلاة و السلام فلا تتردد و قل يارب يارب يارب
Oracle DBA@Amig.com.eg

#4 mmerwa

mmerwa

    عضو

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

تاريخ المشاركة 02 February 2005 - 12:14 AM

ولكن - على حد علمي - أن أي عملية لإدخال لسجل باستخدام VALUES cluse:

INSERT INTO ([i]table | view | subquery[/i])
VALUES ([i]expr | constant[/i] )


فإنه يدخل سجل واحد فقط.

فالمثال الموضح أعلاه

insert into (select employee_id, last_name, email, hire_date, job_id, salary, department_id
from employees where department_id = 50 )

values ( 99999, 'Taylor', 'Dtaylor' , to_date('07-jun-99','dd-mon-rr'),
'ST_CLERK' , 5000 , 50);


يطابق تماماً
INSERT INTO employees (employee_id, last_name, email, hire_date, job_id, salary, department_id)

VALUES( 99999, 'Taylor', 'Dtaylor' , to_date('07-jun-99','dd-mon-rr'),
'ST_CLERK' , 5000 , 50);


ولكن إذا كان المراد إدخال أكثر من سجل في آن واحد، يمكن إستخدام ال subquery بدون VALUES كالآتي:

INSERT INTO ( table | view | subquery ) SUBQUERY

والله أعلم،،،
Mohamed M. Erwa

#5 Oracle^Man

Oracle^Man

    عضو

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

تاريخ المشاركة 18 February 2005 - 01:01 AM

أخي الفاضل

insert into (select employee_id, last_name, email, hire_date, job_id, salary, department_id
from employees where department_id = 50 )

values ( 99999, 'Taylor', 'Dtaylor' , to_date('07-jun-99','dd-mon-rr'),
'ST_CLERK' , 5000 , 50);


المثال هنا غير واضح نوعا ما واستخدامه في غير هذا الموضع أفضل ..
لكن المقصود هنا أن ال where clause هنا سوف يجبر اليوزر على ادخال البيانات التي تحقق هذا الشرط

بمعنى أنه لو أن اليوزر حاول أن يضع رقم 80 بدلا من 50 فلن يتم ادخاله الى قاعدة البيانات

والله أعلم ..

أسأل الله لنا ولكم العلم النافع والعمل الصالح

أخوكم // اوراكل نجد

تم التعديل بواسطة Oracle^Man, 18 February 2005 - 01:03 AM.


#6 mohd_sayed_mohd

mohd_sayed_mohd

    عضو نشط

  • الأعضــاء
  • 247 مشاركة
  • الاسم الأول:Mohamed
  • اسم العائلة:Elsayed
  • البـلـد: Country Flag

تاريخ المشاركة 18 February 2005 - 02:23 AM

Where ليس لها أي اهمية في المثال المذكور ولن تؤثر على النتيجة
لا إله إلا الله ، محمد رسول الله

#7 عروة

عروة

    عضو نشط

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

تاريخ المشاركة 19 February 2005 - 05:01 PM

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

this condition is not meanfull in this case,
but i think they make it 2 mention u that u can use this condition WITH CHECK OPTION


:bro. Oracle^Man

لكن المقصود هنا أن ال where clause هنا سوف يجبر اليوزر على ادخال البيانات التي تحقق هذا الشرط

بمعنى أنه لو أن اليوزر حاول أن يضع رقم 80 بدلا من 50 فلن يتم ادخاله الى قاعدة البيانات

your mention was right ONLY if u use WITH CHECK OPTION Clause
insert into (select employee_id, last_name, email, hire_date, job_id, salary, department_id
from employees where department_id = 50 WITH CHECK OPTION)

values ( 99999, 'Taylor', 'Dtaylor' , to_date('07-jun-99','dd-mon-rr'),
'ST_CLERK' , 5000 , 50);

تم التعديل بواسطة عروة, 19 February 2005 - 05:04 PM.

وقولوا للناس حُسنا البقرة (83)

قال الإمام الشافعي رحمه الله: من وعظ أخاه سرا فقد نصحه وزانه ، ومن وعظه علانية فقد فضحه وعابه

صورة

#8 h_elshawaf

h_elshawaf

    مشترك

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

تاريخ المشاركة 19 February 2005 - 08:10 PM

السلام عليكم ورحمة الله وبركاته
أعتقد أن
select employee_id, last_name, email, hire_date, job_id, salary, department_id
from employees where department_id = 50

ما هو إلا view ولكن بدلا من كتابة اسم الـview تم كتابة الجملة كاملة
وبالتالى فإنه لا يمكن عمل insert لـrow لن تراه ال view

أى أن الجملة المفروض كالتالى
create view test 
as select employee_id, last_name, email, hire_date, job_id, salary, department_id
from employees where department_id = 50 ;


ثم بعد ذلك
insert into test values ( 99999, 'Taylor', 'Dtaylor' , to_date('07-jun-99','dd-mon-rr'),
'ST_CLERK' , 5000 , 50);

أرجو من الله أن أكون فاهم صح
نفعنا الله وإياكم بالعلم النافع

أدرى بأن هناك فجرا .. وأن بعد العسر يسرا
لكنهم ساموا الفتى وبلاده عسفا وقهرا
والعالم الحيران يشهد ما يحل بأمتى
وأنا هنا .. فى غربتى .. فى لوعتى
أبكى وأمسح فى ذهول دمعتى
وأظل أنظر للسماء .. والقلب يخفق بالدعاء
يارب .. أوقظ أمتى


متى يبلغ البنيان يوما تمامه
إذا كنت تبنيه وغيرك يهدمه
لو كان سهما واحدا لإتقيته
ولكنه سهم وثان وثالث

#9 عروة

عروة

    عضو نشط

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

تاريخ المشاركة 19 February 2005 - 09:23 PM

أخي h_elshawaf
وعليكم السلام ورحمة الله وبركاته،،
كل عمليات اللإدخال العادية تستخدم الصيغة التالية:
( INSERT INTO ( table | view | subquery

بعد ذلك إذا كنت عاوز تدخل سجل واحد فقط محدد بقيم معينة في هذه الحالة تستخدم VALUE Clause
.......INSERT INTO ( table | view | subquery VALUES

ولكن إذا كان المراد إدخال أكثر من سجل في آن واحد، يمكن إستخدام ال subquery بدلا من VALUES كالآتي:

INSERT INTO ( table | view | subquery ) SUBQUERY

والمثال الموضح أعلاه: موجود فى introduction to oracle9i: SQL 8-23
يستتخدم الصيغة التالية:
INSERT INTO subquery VALUES
وليست
INSERT INTO view VALUES

إذا فإن عملية الإدخال الموضحة أعلاه صحيحة 100% - بغض النظر عن وجود الـWHERE Clause

أرجو أكون أفدتكم :D

تم التعديل بواسطة عروة, 19 February 2005 - 09:24 PM.

وقولوا للناس حُسنا البقرة (83)

قال الإمام الشافعي رحمه الله: من وعظ أخاه سرا فقد نصحه وزانه ، ومن وعظه علانية فقد فضحه وعابه

صورة

#10 twinlap

twinlap

    عضو

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

تاريخ المشاركة 05 April 2005 - 05:35 PM

where condition ليس له أي تأثير في جملة الــ insert المكتوبة :)