Professional Documents
Culture Documents
6 Subquery
6 Subquery
Subqueries
هﺪف اﻟﺪر ِ
س
----------------------------------------------------------------------------------------
ﻟﻨﻔﺘﺮض أﻧﻚ ﺗﺮﻳﺪ ﻣﻌﺮﻓﺔ اﻟﻤﻮﻇﻔﻴﻦ اﻟﺬﻳﻦ ﺗﺰﻳﺪ رواﺗﺒﻬﻢ ﻋﻦ اﻟﻤﻮﻇﻒ . SMITH
ج اﻟﻰ اﺳﺘﻌﻼﻣﻴﻦ:
ﺤﻞﱠ هﺬﻩ اﻟﻤﺸﻜﻠﺔِ ،ﺗَﺤﺘﺎ ُ
ﻰ ﺗَ ْ
ﻟﻜ ْ
* ﻓﻰ ﻓﻘﺮة . FROM
اذا آﺎن اﻻﺳﺘﻌﻼم اﻟﻔﺮﻋﻰ ﻧﺘﻴﺠﺘﺔ ﻗﻴﻤﺔ واﺣﺪة ﻓﻴﻤﻜﻨﻚ اﺳﺘﺨﺪام) =< ( >, =, >=, <, <>,
اﻣﺎ اذا آﺎن اﻻﺳﺘﻌﻼم اﻟﻔﺮﻋﻰ ﻧﺘﻴﺠﺘﺔ اآﺜﺮ ﻣﻦ ﻗﻴﻤﺔ ﻓﻴﻤﻜﻨﻚ اﺳﺘﺨﺪام ). (IN, ANY, ALL
اﺳﺘﺨﺪام اﻻﺳﺘﻌﻼم اﻟﻔﺮﻋﻲ
ﻓﺎﻟﻤﺜﺎل اﻟﺴﺎﺑﻖ ﻳﺮﻳﺪ ﻋﺮض ﺑﻴﺎﻧﺎت اﻟﻤﻮﻇﻔﻴﻦ اﻟﺬﻳﻦ ﻳﺄﺧﺬون ﻣﺮﺗﺐ اآﺒﺮ ﻣﻦ اﻟﻤﻮﻇﻒ Abel
ﺗﺴﺘﺨﺪم اﻻﺳﺘﻌﻼﻣﺎت اﻟﻔﺮﻋﻴﺔ ﻟﺤﻞ ﻣﺸﻜﻠﺔ ﻣﺎ ﺑﺎﺳﺘﺨﺪام ﺟﻤﻠﺔ اﻟﺸﺮط اﻟﺘﻰ ﺗﻌﺘﻤﺪ ﻋﻠﻲ
ﺑﻴﺎﻧﺎت ﻏﻴﺮ ﻣﻌﺮوﻓﺔ .
* :Inner Queryوﺗﻌﻨﻰ اﻻﺳﺘﻌﻼم اﻟﻔﺮﻋﻰ اﻟﺬى ﻳﻜﻮن ﻧﺘﻴﺠﺘﺔ ﺑﺎﻟﻤﺜﺎل اﻟﺴﺎﺑﻖ ﺗﺎرﻳﺦ ﺗﻌﻴﻦ
اﻟﻤﻮﻇﻒ . FORD
*: Outer Queryوﺗﻌﻨﻰ اﻻﺳﺘﻌﻼم اﻟﺮﺋﻴﺴﻰ اﻟﺬى ﻳﻘﻮم ﺑﻤﻌﺮﻓﺔ اﻟﻤﻮﻇﻔﻴﻦ اﻟﺬﻳﻦ ﺗﻢ
ﺗﻌﻴﻨﻬﻢ ﻗﺒﻞ ﺗﺎرﻳﺦ اﻟﺘﻌﻴﻦ اﻟﻨﺎﺗﺞ ﻋﻦ . Inner Query
ﺣﻴﺚ اﻧﺔ ﻻﻳﻤﻜﻦ ﻣﻘﺎرﻧﺔ ﻗﻴﻤﺔ واﺣﺪ ﺑﺎآﺜﺮ ﻣﻦ ﻗﻴﻤﺔ ﺑﺎﺳﺘﺨﺪام )<. (>=,<=,=,<>,>,
اﻟﻤﻌﺎﻣﻼت
=
>
=>
<
=<
><
ﻣـﺜـﺎﻟـ :
ﺛﻢ ﺑﻌﺪ ذﻟﻚ ﻳﺘﻢ ﺗﻨﻔﻴﺬ اﻻﺳﺘﻌﻼم اﻟﺨﺎرﺟﻰ) (OUTER QUERYﺑﻨﺎء ﻋﻠﻰ ﻧﺘﻴﺠﺔ
اﻻﺳﺘﻌﻼﻣﻴﻦ اﻟﺴﺎﺑﻘﻴﻦ .
ﻦ أن
ﻣﻼﺣﻈﺔ :اﻻﺳﺘﻌﻼﻣﺎت اﻟﺨﺎرﺟﻴﺔ OUTER QUERYواﻟﺪّاﺧﻠﻴﺔ INEER QUERYﻳُﻤﻜ ُ
ﻣﻼﺣﻈﺔ:
ﺗﺤﺼﻞ ﻋﻠﻲ ﺑﻴﺎﻧﺎت ﻣﻦ ﺟﺪاول ﻣﺨﺘﻠﻔﺔِ ﻣﺜﻞ :
ﻓﻔﻰ اﻟﻤﺜﺎل اﻟﺴﺎﺑﻖ آﺎﻧﺖ ﻧﺘﻴﺠﺔ SubQueryﻣﻦ ﺟﺪول اﻻﻗﺴﺎم وﺗﻢ ﻣﻘﺎرﻧﺘﻬﺎ ﻣﻊ ﺑﻴﺎﻧﺎت
ﻣﻦ ﺟﺪول اﻟﻤﻮﻇﻔﻴﻦ .
م ـ ث ـ ال ـ :
أوﺟﺪ رﻗﻢ اﻟﻤﻮﻇﻒ واﺳﻤﺔ ﻟﻠﻤﻮﻇﻔﻴﻦ اﻟﺬﻳﻦ ﻳﺎﺧﺬون اﻗﻞ ﻣﺮﺗﺐ ﻓﻰ آﻞ ﻗﺴﻢ.
اﻟﺨﻄﺄ هﻨﺎ ان SubQueryﻳﻨﺘﺞ ﻋﻨﻬﺎ اآﺜﺮ ﻣﻦ ﻧﺘﻴﺠﺔ وﺗﻢ ﻣﻘﺎرﻧﺘﻬﺎ ﺑﺎﻟﻤﻌﺎﻣﻞ ﻳﺴﺎوى )=(
;)Where salary =any (select min (salary) from Employees group by department
-هﻞ هﺬا اﻻﺳﺘﻌﻼم ﺳﻮف ﻳﺴﺘﺮﺟﻊ ﺻﻔﻮف؟
ﻣﻼﺣﻈﺔ:
اﻟﻤﻌﺎﻣﻞ اﻟﻤﻌﻨﻲ
اﻟﻤﺜﺎل اﻟﺴﺎﺑﻖ ﻳﺮﻳﺪ ﻣﻌﺮﻓﺔ اﻟﻤﻮﻇﻔﻴﻦ اﻟﺬﻳﻦ ﻳﻘﻞ ﻣﺮﺗﺒﻬﻢ ﻋﻦ ﻣﺮﺗﺐ اﻟﻤﻮﻇﻔﻴﻦ
ﺑﻮﻇﻴﻔﺔ . IT_PROG
ﺖ ﻣِﻦ . SubQuery
ن اﻟﻘﻴﻢَ ﺑﻜﻞ اﻟﻘﻴﻢ اﻟﺘﻲ اﺳﺘﺮَﺟﻌ ْ
ﻣﻌﺎﻣﻞ ALLﻳُﻘﺎر ُ
ﻋﻨﺪﻣﺎ ﺗﻜﻮن ﻧﺘﻴﺠﺔ NULL = SUb Queryﻓﻬﺬا ﻳﻌﻨﻰ ان هﺬا اﻻﺳﺘﻌﻼم ﺗﻜﻮن ﻧﺘﻴﺠﺘﺔ
اﻟﻤﺜﺎل اﻟﺴﺎﺑﻖ ﻳﺮﻳﺪ اﻻﺳﺘﻌﻼم ﻋﻦ اﻟﻤﻮﻇﻔﻴﻦ اﻟﺬﻳﻦ ﻳﺎﺧﺬون اﻋﻠﻰ ﻣﺮﺗﺐ ﺑﻜﻞ ﻗﺴﻢ.
ﻳﻤﻜﻦ اﺳﺘﺨﺪام ) (=ANYﺑﺪﻻ ﻣﻦ ) ( INﻓﻰ اﻟﻤﺜﺎل اﻟﺴﺎﺑﻖ وﺗﻜﻮن ﺑﻨﻔﺲ اﻟﻨﺘﻴﺠﺔ :