四張表關聯查詢SQl語句怎麼寫

時間 2022-01-24 13:40:13

1樓:匿名使用者

要注意省表b和市表c也需要關聯他們的省字段。

2樓:匿名使用者

這個直接通過四表關聯就可以出來的。

如select 你要的字段列表 from a,b ,c,d where a.id = b.id and a.id = c.id and a.id = d.id

3樓:老師小喬

其實就是如何實現顯示乙個公司在不同地方的子公司的資訊。應該有這些表:

省份表,市區表、行業表和站點表。來寫一下這些表屬性構成(簡單),主鍵預設為第一項:

省份表(省份編號,省份名稱),

市區表(市區編號,市區名稱,省份編號)

行業表(行業編號,市區編號,行業名稱)

-----此處認為是該市區的行業,其實行業和市區是多對多的關係站點表(站點編號,站點名稱,行業編號)

若要實現如上所述的表,以下語句即可實現:

select 站點名稱,省份名稱,市區名稱,行業名稱from 站點表,省份表,市區表,行業表

where 站點表.行業編號=行業表.行業編號 and 行業表.市區編號=市區表.市區編號 and 市區表.省份編號 = 省份表.省份編號

4樓:朱二雀

河北有 合肥嗎?。。。。。

乙個sql語句中inner join on 可以連線三張或四張表嗎,具體怎麼連?(表和表之間沒設外來鍵)

5樓:匿名使用者

一、外連線

1.概念:包括左向外聯接、右向外聯接或完整外部聯接

2.左連線:left join 或 left outer join

(1)左向外聯接的結果集包括 left outer 子句中指定的左表的所有行,而不僅僅是聯接列所匹配的行。如果左表的某行在右表中沒有匹配行,則在相關聯的結果集行中右表的所有選擇列表列均為空值(null)。

(2)sql語句

select * from table1 left join table2 on table1.id=table2.id

-------------結果-------------

id name id score

------------------------------

1 lee 1 90

2 zhang 2 100

4 wang null null

------------------------------

注釋:包含table1的所有子句,根據指定條件返回table2相應的字段,不符合的以null顯示

3.右連線:right join 或 right outer join

(1)右向外聯接是左向外聯接的反向聯接。將返回右表的所有行。如果右表的某行在左表中沒有匹配行,則將為左表返回空值。

(2)sql語句

select * from table1 right join table2 on table1.id=table2.id

-------------結果-------------

id name id score

------------------------------

1 lee 1 90

2 zhang 2 100

null null 3 70

------------------------------

注釋:包含table2的所有子句,根據指定條件返回table1相應的字段,不符合的以null顯示

4.完整外部聯接:full join 或 full outer join

(1)完整外部聯接返回左表和右表中的所有行。當某行在另乙個表中沒有匹配行時,則另乙個表的選擇列表列包含空值。如果表之間有匹配行,則整個結果集行包含基表的資料值。

(2)sql語句

select * from table1 full join table2 on table1.id=table2.id

-------------結果-------------

id name id score

------------------------------

1 lee 1 90

2 zhang 2 100

4 wang null null

null null 3 70

------------------------------

注釋:返回左右連線的union(見上左、右連線)

二、內連線

1.概念:內聯接是用比較運算子比較要聯接列的值的聯接

2.內連線:join 或 inner join

3.sql語句

select * from table1 join table2 on table1.id=table2.id

-------------結果-------------

id name id score

------------------------------

1 lee 1 90

2 zhang 2 100

------------------------------

注釋:只返回符合條件的table1和table2的列

4.等價(與下列執行效果相同)

a:select a.*,b.* from table1 a,table2 b where a.id=b.id

b:select * from table1 cross join table2 where table1.id=table2.

id (注:cross join後加條件只能用where,不能用on)

三、交叉連線(完全)

1.概念:沒有 where 子句的交叉聯接將產生聯接所涉及的表的笛卡爾積。

第乙個表的行數乘以第二個表的行數等於笛卡爾積結果集的大小。(table1和table2交叉連線產生3*3=9條記錄)

2.交叉連線:cross join (不帶條件where...)

3.sql語句

select * from table1 cross join table2

-------------結果-------------

id name id score

------------------------------

1 lee 1 90

2 zhang 1 90

4 wang 1 90

1 lee 2 100

2 zhang 2 100

4 wang 2 100

1 lee 3 70

2 zhang 3 70

4 wang 3 70

------------------------------

注釋:返回3*3=9條記錄,即笛卡爾積

4.等價(與下列執行效果相同)

a:select * from table1,table2

6樓:匿名使用者

和外來鍵沒有關係,外來鍵只是強行約束了引用關係

只要你的資料存在邏輯上的關聯,就可以將表進行連線查詢。

7樓:匿名使用者

inner join(等值連線) 只返回兩個表中聯結字段相等的行

left join(左聯接) 返回包括左表中的所有記錄和右表中聯結字段相等的記錄

right join(右聯接) 返回包括右表中的所有記錄和左表中聯結字段相等的記錄

inner join 語法:

inner join 連線兩個資料表的用法:

select * from 表1 inner join 表2 on 表1.欄位號=表2.欄位號

inner join 連線三個資料表的用法:

select * from (表1 inner join 表2 on 表1.欄位號=表2.欄位號) inner join 表3 on 表1.欄位號=表3.欄位號

inner join 連線四個資料表的用法:

select * from ((表1 inner join 表2 on 表1.欄位號=表2.欄位號) inner join 表3 on 表1.

欄位號=表3.欄位號) inner join

表4 on member.欄位號=表4.欄位號

inner join 連線五個資料表的用法:

select * from (((表1 inner join 表2 on 表1.欄位號=表2.欄位號) inner join 表3

on 表1.欄位號=表3.欄位號) inner join 表4 on member.欄位號=表4.欄位號) inner join 表5 on

member.欄位號=表5.欄位號

8樓:

可以的select *

from t1 a inner join t2 b on a.id = b.id

inner join t3 c on a.cid = c.cidinner join t4 d on b.name = d.name..................

on後面是兩表的關聯字段,跟外來鍵沒有關係

兩表關聯查詢SQL語句的,要怎麼寫

1 建立測試表 create table company companyid number,companyname varchar2 20 contacts varchar2 20 create table users userid number,companyid number,username ...

sql模糊查詢語句怎麼寫啊,SQL模糊查詢語句怎麼寫啊

假設表名為product,商品名為name,簡界為remark.則可如下寫 select name remark from product name like aa or remark like aa 注 上面單引號的aa你表模糊查詢輸入的字元. 用 like 子句呀。比如 select from ...

這個查詢結果行列交換的SQL語句怎麼寫

有意思的問題 給出乙個參考的url 假設你表是這樣的結構 部件 入庫日期 入庫數量 a 1 1 10a 1 1 5a 1 2 10b 1 5 10其實就是兩種方法,假設你的資料庫是11以前的,只能先定義好查哪天到哪天 然後 那麼 selct 部件,sum decode 入庫日期 1號,入庫數量,0 ...