'内联
txtsql="select * from 客房预定表 inner join 客房入住表 on 客房预定表.客人编号=客房入住表.客人编号"
'客房入住价格用price,客房预定价格用resv
price.text=resv.text
txtsql="select * from 客房预定表 inner join 客房入住表 on 客房预定表.客人编号=客房入住表.客人编号"
'客房入住价格用price,客房预定价格用resv
price.text=resv.text
join...ON... 语句是SQL查询中用于连接多个表的语句,该语句的语法为:
FROM table1 [inner|OUTER|LEFT|RIGHT] join table2 ON table1.field1 compopr table2.field2
其中tabel1指定要查询的表,tabel2指定连接到tabel1的表,field1, field2指定连接字段名称,
compopr指定关系比较符,它可以是大于、小于、等于、不等于等。
范例三: 列出所有书籍以及它的作者
在BIBLIO中,书籍的名称位于Titles表的Title字段中,而书籍的作者位于Authors表的Autoor字段中,而这两个表之间没
有相关联的字段,我们这时需要联合数据库中的Title Author表,利用该表的Au_ID字段同Authors表中的Au_ID字段的关联以及
ISBN字段同Titles表中的ISBN字段的关联,范例如下:
Private Sub Form_Load()
Dim rsTemp As Recordset
Dim dbTemp As Database
Dim astr As String
Set dbTemp = DBEngine(0).OpenDatabase("e:\program files\microsoft visual studio\vb98\biblio.mdb", dbOpenSnapshot)
astr = "SELECT Authors.Author, Titles.Title FROM " & _
"([Title Author] inner join Titles ON [Title Author].ISBN = Titles.ISBN)" & _
"inner join Authors ON [Title Author].Au_ID = Authors.Au_ID " & _
"WHERE Titles.Title LIKE '*Beginner*'" Set rsTemp = dbTemp.OpenRecordset(astr)
If rsTemp.RecordCount > 0 Then
rsTemp.MoveFirst
Do Until rsTemp.EOF
List1.AddItem rsTemp![Title] & " " & rsTemp![Author]
rsTemp.MoveNext
Loop
End If
End Sub
在上面的范例中,我们使用两个inner JION联合将Authors表中的Au_ID字段 和Titles表中的ISBN字段连接到Title Author
表中,然后在Title Author表中查找Title字段中包含字符串“Beginner”的纪录并将Title字段和Author字段输出。
---------------------
你的第一个贴子中写了。
此示例返回 authors 和 publishers 两个表的矢量积。所返回的列表包含 au_lname 行和所有 pub_name 行的所有可能的组合。USE pubs
SELECT au_lname, pub_name
FROM authors CROSS JOIN publishers
ORDER BY au_lname ASC, pub_name ASC
使用 SQL-92 FULL OUTER JOIN 语法
此示例返回 titles 表中的书籍标题及对应的出版商。还返回未出版列在 titles 表中的书籍的出版商,以及不是由 publishers 表中所列的出版商出版的所有书籍标题。USE pubs
-- The OUTER keyword following the FULL keyword is optional.
SELECT SUBSTRING(titles.title, 1, 10) AS Title,
publishers.pub_name AS Publisher
FROM publishers FULL OUTER JOIN titles
ON titles.pub_id = publishers.pub_id
WHERE titles.pub_id IS NULL
OR publishers.pub_id IS NULL
ORDER BY publishers.pub_name使用 SQL-92 LEFT OUTER JOIN 语法
此示例在 au_id 上联接两个表,并保留左表中没有匹配项的行。authors 表与 titleauthor 表在各表的 au_id 列上相匹配。无论作品出版或未出版,所有作者均出现在结果集中。USE pubs
-- The OUTER keyword following the LEFT keyword is optional.
SELECT SUBSTRING(authors.au_lname, 1, 10) AS Last,
authors.au_fname AS First, titleauthor.title_id
FROM authors LEFT OUTER JOIN titleauthor
ON authors.au_id = titleauthor.au_id
使用 SQL-92 INNER JOIN 语法
此示例返回所有出版商名称以及相应的所出版的书籍标题。USE pubs
-- By default, SQL Server performs an INNER JOIN if only the JOIN
-- keyword is specified.
SELECT SUBSTRING(titles.title, 1, 30) AS Title, publishers.pub_name
FROM publishers INNER JOIN titles
ON titles.pub_id = publishers.pub_id
ORDER BY publishers.pub_name
使用 SQL-92 RIGHT OUTER JOIN 语法
此示例在 pub_id 上联接两个表,并保留右表中没有匹配项的行。publishers 表与 titles 表在各表的 pub_id 上相匹配。无论是否已出版书籍,所有出版商均出现在结果集中。USE pubs
SELECT SUBSTRING(titles.title, 1, 30) AS 'Title', publishers.pub_name
FROM titles RIGHT OUTER JOIN publishers
ON titles.pub_id = publishers.pub_id
ORDER BY publishers.pub_name