亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? ch07.htm

?? 21精通SQL
?? HTM
?? 第 1 頁(yè) / 共 3 頁(yè)
字號(hào):
LE SHOPPE  HOMETOWN   KS     54678      555-1278    NONE
AAA BIKE   10 OLDTOWN NE     56784      555-3421    JOHN-MGR
JACKS BIKE 24 EGLIN   FL     34567      555-2314    NONE
</FONT></PRE>
<P>with a slightly modified version of the query you used to find the above-average
orders:</P>
<H5>INPUT/OUTPUT:</H5>
<PRE><FONT COLOR="#0066FF"><B>SELECT ALL C.NAME, C.ADDRESS, C.STATE,C.ZIP
FROM CUSTOMER C
WHERE C.NAME IN
(SELECT O.NAME
FROM ORDERS O, PART P
WHERE O.PARTNUM = P.PARTNUM
AND
O.QUANTITY * P.PRICE  &gt;
(SELECT AVG(O.QUANTITY * P.PRICE)
FROM ORDERS O, PART P
WHERE O.PARTNUM = P.PARTNUM))</B>

NAME       ADDRESS    STATE  ZIP
========== ========== ====== ==========

BIKE SPEC  CPT SHRIVE LA     45678
LE SHOPPE  HOMETOWN   KS     54678
JACKS BIKE 24 EGLIN   FL     34567
</FONT></PRE>
<H5>ANALYSIS:</H5>
<P>Here's a look at what you asked for. In the innermost set of parentheses, you
find a familiar statement:</P>
<PRE><FONT COLOR="#0066FF">SELECT AVG(O.QUANTITY * P.PRICE)
FROM ORDERS O, PART P
WHERE O.PARTNUM = P.PARTNUM
</FONT></PRE>
<P>This result feeds into a slightly modified version of the <TT>SELECT</TT> clause
you used before:</P>
<PRE><FONT COLOR="#0066FF">SELECT O.NAME
FROM ORDERS O, PART P
WHERE O.PARTNUM = P.PARTNUM
AND
O.QUANTITY * P.PRICE  &gt;

(...)
</FONT></PRE>
<P>Note the <TT>SELECT</TT> clause has been modified to return a single column, <TT>NAME</TT>,
which, not so coincidentally, is common with the table <TT>CUSTOMER</TT>. Running
this statement by itself you get:</P>
<H5>INPUT/OUTPUT:</H5>
<PRE><FONT COLOR="#0066FF"><B>SELECT O.NAME
FROM ORDERS O, PART P
WHERE O.PARTNUM = P.PARTNUM
AND
O.QUANTITY * P.PRICE  &gt;
(SELECT AVG(O.QUANTITY * P.PRICE)
FROM ORDERS O, PART P
WHERE O.PARTNUM = P.PARTNUM)</B>

NAME
==========

LE SHOPPE
BIKE SPEC
LE SHOPPE
BIKE SPEC
JACKS BIKE
</FONT></PRE>
<H5>ANALYSIS:</H5>
<P>We just spent some time discussing why your subqueries should return just one
value. The reason this query was able to return more than one value becomes apparent
in a moment.</P>
<P>You bring these results to the statement:</P>
<PRE><FONT COLOR="#0066FF">SELECT C.NAME, C.ADDRESS, C.STATE,C.ZIP
FROM CUSTOMER C
WHERE C.NAME IN
</FONT></PRE>
<PRE><FONT COLOR="#0066FF">(...)
</FONT></PRE>
<H5>ANALYSIS:</H5>
<P>The first two lines are unremarkable. The third reintroduces the keyword <TT>IN</TT>,
last seen on Day 2, &quot;Introduction to the Query: The <TT>SELECT</TT> Statement.&quot;
<TT>IN</TT> is the tool that enables you to use the multiple-row output of your subquery.
<TT>IN</TT>, as you remember, looks for matches in the following set of values enclosed
by parentheses, which in the this case produces the following values:</P>
<PRE><FONT COLOR="#0066FF">LE SHOPPE
BIKE SPEC
LE SHOPPE
BIKE SPEC
JACKS BIKE
</FONT></PRE>
<P>This subquery provides the conditions that give you the mailing list:</P>
<PRE><FONT COLOR="#0066FF">NAME       ADDRESS    STATE  ZIP
========== ========== ====== ======

BIKE SPEC  CPT SHRIVE LA     45678
LE SHOPPE  HOMETOWN   KS     54678
JACKS BIKE 24 EGLIN   FL     34567
</FONT></PRE>
<P>This use of <TT>IN</TT> is very common in subqueries. Because <TT>IN</TT> uses
a set of values for its comparison, it does not cause the SQL engine to feel conflicted
and inadequate.</P>
<P>Subqueries can also be used with <TT>GROUP BY</TT> and <TT>HAVING</TT> clauses.
Examine the following query:</P>
<H5>INPUT/OUTPUT:</H5>
<PRE><FONT COLOR="#0066FF"><B>SELECT NAME, AVG(QUANTITY)
FROM ORDERS
GROUP BY NAME
HAVING AVG(QUANTITY) &gt;
(SELECT AVG(QUANTITY)
FROM ORDERS)</B>

NAME               AVG
========== ===========

BIKE SPEC            8
JACKS BIKE          14
</FONT></PRE>
<H5>ANALYSIS:</H5>
<P>Let's examine this query in the order the SQL engine would. First, look at the
subquery:</P>
<H5>INPUT/OUTPUT:</H5>
<PRE><FONT COLOR="#0066FF"><B>SELECT AVG(QUANTITY)
FROM ORDERS
</B>
        AVG
===========

          6
</FONT></PRE>
<P>By itself, the query is as follows:</P>
<H5>INPUT/OUTPUT:</H5>
<PRE><FONT COLOR="#0066FF"><B>SELECT NAME, AVG(QUANTITY)
FROM ORDERS
GROUP BY NAME</B>

NAME               AVG
========== ===========

AAA BIKE             6
BIKE SPEC            8
JACKS BIKE          14
LE SHOPPE            4
TRUE WHEEL           5
</FONT></PRE>
<P>When combined through the <TT>HAVING</TT> clause, the subquery produces two rows
that have above-average <TT>QUANTITY</TT>.</P>
<H5>INPUT/OUTPUT:</H5>
<PRE><FONT COLOR="#0066FF"><B>HAVING AVG(QUANTITY) &gt;
(SELECT AVG(QUANTITY)
FROM ORDERS)</B>

NAME               AVG
========== ===========

BIKE SPEC            8
JACKS BIKE          14
</FONT></PRE>
<H2><FONT COLOR="#000077">Correlated Subqueries</FONT></H2>
<P>The subqueries you have written so far are <I>self-contained</I>. None of them
have used a reference from outside the subquery. <I>Correlated subqueries</I> enable
you to use an outside reference with some strange and wonderful results. Look at
the following query:</P>
<H5>INPUT:</H5>
<PRE><FONT COLOR="#0066FF"><B>SELECT *
FROM ORDERS O
WHERE 'ROAD BIKE' =
(SELECT DESCRIPTION
FROM PART P
WHERE P.PARTNUM = O.PARTNUM)</B></FONT></PRE>
<H5><FONT COLOR="#000000">OUTPUT:</FONT></H5>
<PRE><FONT COLOR="#000000"></FONT></PRE>
<PRE><FONT COLOR="#0066FF">  ORDEREDON NAME           PARTNUM    QUANTITY REMARKS
=========== ========== =========== =========== ==========

19-MAY-1996 TRUE WHEEL          76           3 PAID
17-JAN-1996 BIKE SPEC           76          11 PAID
17-JAN-1996 LE SHOPPE           76           5 PAID
 1-JUL-1996 AAA BIKE            76           4 PAID
</FONT></PRE>
<PRE><FONT COLOR="#0066FF">11-JUL-1996 JACKS BIKE          76          14 PAID
</FONT></PRE>
<P>This query actually resembles the following <TT>JOIN</TT>:</P>
<H5>INPUT:</H5>
<PRE><FONT COLOR="#0066FF"><B>SELECT O.ORDEREDON, O.NAME,
O.PARTNUM, O.QUANTITY, O.REMARKS
FROM ORDERS O, PART P
WHERE P.PARTNUM = O.PARTNUM
AND P.DESCRIPTION = 'ROAD BIKE'</B></FONT></PRE>
<H5><FONT COLOR="#000000">OUTPUT:</FONT></H5>
<PRE><FONT COLOR="#0066FF">  ORDEREDON NAME           PARTNUM    QUANTITY REMARKS
=========== ========== =========== =========== =======

19-MAY-1996 TRUE WHEEL          76           3 PAID
 1-JUL-1996 AAA BIKE            76           4 PAID
17-JAN-1996 LE SHOPPE           76           5 PAID
17-JAN-1996 BIKE SPEC           76          11 PAID
11-JUL-1996 JACKS BIKE          76          14 PAID
</FONT></PRE>
<H5>ANALYSIS:</H5>
<P>In fact, except for the order, the results are identical. The correlated subquery
acts very much like a join. The correlation is established by using an element from
the query in the subquery. In this example the correlation was established by the
statement</P>
<PRE><FONT COLOR="#0066FF">WHERE P.PARTNUM = O.PARTNUM
</FONT></PRE>
<P>in which you compare <TT>P.PARTNUM</TT>, from the table inside your subquery,
to <TT>O.PARTNUM</TT>, from the table outside your query. Because <TT>O.PARTNUM</TT>
can have a different value for every row, the correlated subquery is executed for
each row in the query. In the next example each row in the table <TT>ORDERS</TT></P>
<H5><FONT COLOR="#000000">INPUT/OUTPUT:</FONT></H5>
<PRE><FONT COLOR="#0066FF"><B>SELECT *
FROM ORDERS
</B>
  ORDEREDON NAME           PARTNUM    QUANTITY REMARKS
=========== ========== =========== =========== =======

15-MAY-1996 TRUE WHEEL          23           6 PAID
19-MAY-1996 TRUE WHEEL          76           3 PAID
 2-SEP-1996 TRUE WHEEL          10           1 PAID
30-JUN-1996 TRUE WHEEL          42           8 PAID
30-JUN-1996 BIKE SPEC           54          10 PAID
30-MAY-1996 BIKE SPEC           10           2 PAID
30-MAY-1996 BIKE SPEC           23           8 PAID
17-JAN-1996 BIKE SPEC           76          11 PAID
17-JAN-1996 LE SHOPPE           76           5 PAID
 1-JUN-1996 LE SHOPPE           10           3 PAID
 1-JUN-1996 AAA BIKE            10           1 PAID
 1-JUL-1996 AAA BIKE            76           4 PAID
 1-JUL-1996 AAA BIKE            46          14 PAID
11-JUL-1996 JACKS BIKE          76          14 PAID
</FONT></PRE>
<P>is processed against the subquery criteria:</P>
<PRE><FONT COLOR="#0066FF">SELECT DESCRIPTION
FROM PART P
WHERE P.PARTNUM = O.PARTNUM
</FONT></PRE>
<H5>ANALYSIS:</H5>
<P>This operation returns the <TT>DESCRIPTION</TT> of every row in <TT>PART</TT>
where <TT>P.PARTNUM = O.PARTNUM</TT>. These descriptions are then compared in the
<TT>WHERE</TT> clause:</P>
<PRE><FONT COLOR="#0066FF">WHERE 'ROAD BIKE' =
</FONT></PRE>
<P>Because each row is examined, the subquery in a correlated subquery can have more
than one value. However, don't try to return multiple columns or columns that don't
make sense in the context of the <TT>WHERE</TT> clause. The values returned still
must match up against the operation specified in the <TT>WHERE</TT> clause. For example,
in the query you just did, returning the <TT>PRICE</TT> to compare with <TT>ROAD
BIKE</TT> would have the following result:</P>
<H5>INPUT/OUTPUT:</H5>
<PRE><FONT COLOR="#0066FF"><B>SELECT *
FROM ORDERS O
WHERE 'ROAD BIKE' =
(SELECT PRICE
FROM PART P
WHERE P.PARTNUM = O.PARTNUM)</B>
</FONT></PRE>
<PRE><FONT COLOR="#0066FF">conversion error from string &quot;ROAD BIKE&quot;
</FONT></PRE>
<P>Here's another example of something not to do:</P>
<PRE><FONT COLOR="#0066FF">SELECT *
FROM ORDERS O
WHERE 'ROAD BIKE' =
(SELECT *
FROM PART P
WHERE P.PARTNUM = O.PARTNUM)
</FONT></PRE>
<H5>ANALYSIS:</H5>
<P>This <TT>SELECT</TT> caused a General Protection Fault on my Windows operating
system. The SQL engine simply can't correlate all the columns in <TT>PART</TT> with
the operator <TT>=</TT>.</P>
<P>Correlated subqueries can also be used with the <TT>GROUP BY</TT> and <TT>HAVING</TT>
clauses. The following query uses a correlated subquery to find the average total
order for a particular part and then applies that average value to filter the total
order grouped by <TT>PARTNUM</TT>:</P>
<H5>INPUT/OUTPUT:</H5>
<PRE><FONT COLOR="#0066FF"><B>SELECT O.PARTNUM, SUM(O.QUANTITY*P.PRICE), COUNT(PARTNUM)
FROM ORDERS O, PART P
WHERE P.PARTNUM = O.PARTNUM
GROUP BY O.PARTNUM
HAVING SUM(O.QUANTITY*P.PRICE) &gt;
(SELECT AVG(O1.QUANTITY*P1.PRICE)
FROM PART P1, ORDERS O1
WHERE P1.PARTNUM = O1.PARTNUM
AND P1.PARTNUM = O.PARTNUM)</B>

    PARTNUM         SUM       COUNT
=========== =========== ===========

         10     8400.00           4
         23     4906.30           2
         76    19610.00           5
</FONT></PRE>
<H5>ANALYSIS:</H5>
<P>The subquery does not just compute one</P>
<PRE><FONT COLOR="#0066FF">AVG(O1.QUANTITY*P1.PRICE)
</FONT></PRE>
<P>Because of the correlation between the query and the subquery,</P>
<PRE><FONT COLOR="#0066FF">AND P1.PARTNUM = O.PARTNUM
</FONT></PRE>
<P>this average is computed for every group of parts and then compared:</P>
<PRE><FONT COLOR="#0066FF">HAVING SUM(O.QUANTITY*P.PRICE) &gt;
</FONT></PRE>


<BLOCKQUOTE>
	<P>
<HR>
<FONT COLOR="#000077"><B>TIP:</B></FONT><B> </B>When using correlated subqueries
	with <TT>GROUP BY</TT> and <TT>HAVING</TT>, the columns in the <TT>HAVING</TT> clause
	must exist in either the <TT>SELECT</TT> clause or the <TT>GROUP BY</TT> clause.
	Otherwise, you get an error message along the lines of <TT>invalid column reference</TT>
	because the subquery is evoked for each group, not each row. You cannot make a valid
	comparison to something that is not used in forming the group. 
<HR>


</BLOCKQUOTE>

<H2><FONT COLOR="#000077">Using EXISTS, ANY, and ALL</FONT></H2>
<P>The usage of the keywords <TT>EXISTS</TT>, <TT>ANY</TT>, and <TT>ALL</TT> is not
intuitively obvious to the casual observer. <TT>EXISTS</TT> takes a subquery as an
argument and returns <TT>TRUE</TT> if the subquery returns anything and <TT>FALSE</TT>
if the result set is empty. For example:</P>
<H5>INPUT/OUTPUT:</H5>
<PRE><FONT COLOR="#0066FF"><B>SELECT NAME, ORDEREDON
FROM ORDERS 
WHERE EXISTS
(SELECT *
FROM ORDERS
WHERE NAME ='TRUE WHEEL')
</B>
NAME         ORDEREDON
========== ===========

TRUE WHEEL 15-MAY-1996
TRUE WHEEL 19-MAY-1996
TRUE WHEEL  2-SEP-1996
TRUE WHEEL 30-JUN-1996
BIKE SPEC  30-JUN-1996
BIKE SPEC  30-MAY-1996
BIKE SPEC  30-MAY-1996
BIKE SPEC  17-JAN-1996
LE SHOPPE  17-JAN-1996
LE SHOPPE   1-JUN-1996

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久久成人黄色影片| 激情综合色综合久久综合| 亚洲国产欧美在线| 日韩高清在线一区| 国产电影一区二区三区| 色综合久久综合| 欧美一区二区三区喷汁尤物| 国产亚洲午夜高清国产拍精品 | 日本韩国精品在线| 欧美专区在线观看一区| 日韩限制级电影在线观看| 欧美国产在线观看| 婷婷综合另类小说色区| 国产精品456| 欧美日本视频在线| 日本一区二区高清| 免费人成在线不卡| 99久久777色| 日韩欧美高清在线| 亚洲视频一区二区在线观看| 视频在线观看一区| av在线播放成人| 精品久久久久久久久久久久久久久久久 | 精品99一区二区| 亚洲狠狠丁香婷婷综合久久久| 精品亚洲欧美一区| 欧美性生活大片视频| 国产日韩欧美一区二区三区综合| 亚洲综合免费观看高清完整版 | 26uuuu精品一区二区| 亚洲综合区在线| 成人av在线播放网站| 欧美一区二区久久| 亚洲一区二区三区在线看| 国产成人av电影在线| 日韩一区二区三区高清免费看看| 亚洲激情欧美激情| 成人av影院在线| 精品久久久三级丝袜| 婷婷久久综合九色综合绿巨人| fc2成人免费人成在线观看播放 | 精品一区免费av| 欧美熟乱第一页| 亚洲男女毛片无遮挡| 国产在线不卡视频| 欧美电影一区二区三区| 亚洲欧美一区二区三区极速播放| 国产一区二区三区观看| 日韩欧美在线123| 亚洲一级二级在线| 国产久卡久卡久卡久卡视频精品| 3atv在线一区二区三区| 亚洲成人综合在线| 91国偷自产一区二区开放时间| 欧美韩日一区二区三区| 国产毛片精品国产一区二区三区| 欧美哺乳videos| 免费高清在线一区| 日韩欧美国产1| 久久er精品视频| 精品免费日韩av| 久久国产精品72免费观看| 日韩欧美一区二区久久婷婷| 三级亚洲高清视频| 制服丝袜亚洲播放| 五月婷婷欧美视频| 欧美日韩mp4| 三级精品在线观看| 欧美一区二区三区精品| 99久久久久免费精品国产 | 成人激情av网| 国产精品久久久久久久久图文区 | 国产精品日日摸夜夜摸av| 盗摄精品av一区二区三区| 久久日一线二线三线suv| 黄页视频在线91| 久久综合给合久久狠狠狠97色69| 激情图片小说一区| 久久网站热最新地址| 高清久久久久久| 国产精品久久久久一区二区三区| aaa亚洲精品| 亚洲免费观看高清完整版在线观看 | 91精品国产一区二区三区| 丝袜美腿亚洲综合| 日韩三级免费观看| 极品少妇一区二区三区精品视频| www日韩大片| 成人黄色小视频| 亚洲日本一区二区| 欧美日韩国产综合久久| 青青草国产精品97视觉盛宴| 精品福利一二区| 国产成人免费av在线| 中文字幕一区三区| 欧美在线观看18| 亚洲电影视频在线| 日韩午夜激情电影| 国产成人午夜片在线观看高清观看| 国产精品青草综合久久久久99| 色综合中文字幕国产| 一区二区三区四区av| 欧美精品第1页| 国产精品中文欧美| 一区二区三区在线看| 欧美一区二区福利在线| 国产成人免费视频一区| 亚洲精品网站在线观看| 欧美一区二区三区人| 成人亚洲一区二区一| 亚洲bt欧美bt精品777| 精品国产一区二区三区久久影院| 成人妖精视频yjsp地址| 亚洲成人激情av| 久久亚洲一区二区三区四区| 99久久国产综合色|国产精品| 五月婷婷激情综合网| 国产欧美综合在线| 欧美福利视频一区| 成人综合在线网站| 日韩电影在线一区二区三区| 久久这里只有精品6| 在线观看av一区| 国产剧情一区在线| 亚洲成av人片| 国产精品福利电影一区二区三区四区 | 欧美激情综合五月色丁香| 欧美视频在线观看一区| 国内精品国产成人国产三级粉色| 自拍视频在线观看一区二区| 日韩一区和二区| 色老头久久综合| 欧美群妇大交群的观看方式| 国产成人日日夜夜| 日日欢夜夜爽一区| 综合久久给合久久狠狠狠97色| 日韩欧美中文字幕制服| 91片在线免费观看| 国产一区久久久| 日韩影院精彩在线| 亚洲精品欧美二区三区中文字幕| 精品国产网站在线观看| 欧美午夜一区二区| 99re热视频精品| 国产美女在线精品| 麻豆精品视频在线观看视频| 亚洲一区二区精品3399| 国产亚洲一二三区| 欧美v亚洲v综合ⅴ国产v| 欧美日韩一区精品| 99久久久无码国产精品| 国产成人在线视频网址| 老司机精品视频导航| 亚洲妇女屁股眼交7| 中文字幕亚洲不卡| 国产日韩av一区| 欧美成人免费网站| 欧美一级生活片| 69久久夜色精品国产69蝌蚪网 | 天天免费综合色| 伊人一区二区三区| 国产精品传媒视频| 国产蜜臀97一区二区三区| 欧美成人官网二区| 91精品国产全国免费观看| 欧美体内she精高潮| 91福利国产成人精品照片| 97精品国产露脸对白| 成人一级视频在线观看| 国产乱理伦片在线观看夜一区| 久久国产剧场电影| 美女视频一区在线观看| 日韩黄色片在线观看| 亚洲国产美女搞黄色| 亚洲美女视频在线观看| 亚洲图片另类小说| 综合在线观看色| 亚洲美女淫视频| 一区二区三区 在线观看视频| 亚洲少妇30p| 亚洲黄色av一区| 亚洲电影你懂得| 日韩专区欧美专区| 奇米一区二区三区| 久久国产生活片100| 久久精品国产第一区二区三区| 久久99国产精品久久99| 久久激情综合网| 精久久久久久久久久久| 国产乱子伦视频一区二区三区 | 中文字幕亚洲一区二区av在线 | 欧美影院午夜播放| 欧美日韩国产综合草草| 日韩一区二区三区视频| 日韩欧美一二三四区| 精品sm在线观看| 国产精品久久久久久久久图文区 | 91视频91自| 欧美日韩精品欧美日韩精品一 | 日韩激情视频在线观看|