asp的ado中使用SELECT-sql文法(五)

來源:互聯網
上載者:User

Join

JOIN串連組合兩個表中的欄位記錄,包括三種:

INNER JOIN運算式:串連組合兩個表中的欄位記錄。

LEFT JOIN運算式:串連組合兩個表中的欄位記錄,並將包含了LEFT JOIN左邊表中的全部記錄。

RIGHT JOIN運算式:串連組合兩個表中的欄位記錄,並將包含了RIGHT JOIN右邊表中的全部記錄。

INNER JOIN設定兩個表相關連的運算式,以串連組合兩個表中的欄位記錄。

INNER JOIN文法如下:

FROM 表1 INNER JOIN 表2 ON 表1.欄位1 比較運運算元 表2.欄位2

兩個表串連的欄位,譬如 [表1.欄位1=表2.欄位2],必須具有相同的欄位類型,但是欄位名稱不需要相同。

例如,自動編號欄位類型可以串連Long 的欄位類型,但是單精整數欄位類型不能串連雙精整數的欄位類型。

比較運運算元可為=、<、>、<=、>=、或<>。

JOIN串連的欄位,不可以包含MEMO欄位類型或OLE物件類型,否則會發生錯誤。

在一個JOIN運算式中,可以連結多個ON子句:

SELECT fields
FROM 表1 INNER JOIN 表2
ON 表1.欄位1 比較運運算元 表2.欄位1 AND
ON 表1.欄位2 比較運運算元 表2.欄位2) OR
ON 表1.欄位3 比較運運算元 表2.欄位3)

JOIN運算式中,可以為巢狀式:

SELECT fields
FROM 表1 INNER JOIN
(表2 INNER JOIN [( ]表3
[INNER JOIN [( ] 表x [INNER JOIN ...)]
ON 表3.欄位3 比較運運算元 表x.欄位x)]
ON 表2.欄位2 比較運運算元 表3.欄位3)
ON 表1.欄位1 比較運運算元 表2.欄位2

在一個INNER JOIN中,可以包括巢狀式的LEFT JOIN或RIGHT JOIN,但是在一個LEFT JOIN或RIGHT JOIN中不能包括巢狀式的INNER JOIN。

讓我們看一個於ASP程式當中使用這個SQL指令的例子。

可以利用Inner Join...On組合兩個表中的記錄,譬如ASP程式rs26.asp如下,[Select 銷售.代號, 產品.名稱, 產品.價格, 銷售.數量 from 銷售 Inner Join 產品 On 產品.代號 = 銷售.代號],使用Inner Join...On設定兩個表相關連的運算式,組合兩個表中的記錄:

<%

Set conn1 = Server.CreateObject("ADODB.Connection")

conn1.Open "DBQ="& Server.MapPath("ntopsamp.mdb") &";Driver={Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MS Access;"

Set rs3 = Server.CreateObject("ADODB.Recordset")

sql = "Select 銷售.代號, 產品.名稱, 產品.價格, 銷售.數量 from 銷售 Inner Join 產品 On 產品.代號 = 銷售.代號"

rs3.Open sql,conn1,1,1,1

%>

<TABLE COLSPAN=8 CELLPADDING=5 BORDER=0>

<TR>

<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">代號</FONT></TD>

<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">名稱</FONT></TD>

<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">價格</FONT></TD>

<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">數量</FONT></TD>

</TR>

<% Do while not rs3.EOF %>

<TR>

<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3(0)%></TD>

<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3(1)%></TD>

<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3(2)%></TD>

<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3(3)%></TD>

</TR>

<%

rs3.MoveNext

Loop

rs3.Close

%>

</TABLE>

以上的 ASP程式rs26.asp,在使用者端使用瀏覽器,瀏覽執行的結果,顯示組合兩個表中的記錄,由於銷售表中並沒有名稱欄位和價格欄位,通過 [Inner Join 產品 On 產品.代號 = 銷售.代號] 找到產品表的名稱欄位和價格欄位之資料。

上例使用Inner Join的文法:

Select 銷售.代號, 產品.名稱, 產品.價格, 銷售.數量 from 銷售 Inner Join 產品 On 產品.代號 = 銷售.代號

結果與以下使用Where相同:

Select 銷售.代號, 產品.名稱, 產品.價格, 銷售.數量 from 銷售, 產品 Where 產品.代號 = 銷售.代號

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.