SQL多表巢狀一對多查詢,SQL多表巢狀一對多查詢

2021-03-03 23:20:25 字數 1557 閱讀 9705

1樓:你的未央熙

好幾種寫法,我這裡就寫乙個算拋磚引玉吧,也算給你乙個提示。

select name from a where id in (select c.aid from c where bin in (select id from b where job in ('q','r')))

也可以直接版關聯到c表然後相等,這權個辦法應該不錯,可以直接對應。

sql多對多關係的兩表如何聯合查詢出所有的結果?

2樓:城春許木深

1、語句如下:

select project.*, [contract].* from project

left join contract_project on project.projectid = contract_project.projectid

left join [contract] on contract_project.contractid = [contract].contractid

注:contract在sql server中是關鍵字,因此使用了中括號。

2、使用left join

left join是以左表為準的。換句話說,左表(project)的記錄將會全部表示出來,而右表(contract_project)只會顯示符合搜尋條件的記錄

(例子中為: project.projectid = contract_project.

projectid)。對於contract表來說,contract_project表是它的左表。

此例以兩個left join 將三個表按條件聯接在一起。

擴充套件資料

連線通常可以在select語句的from子句或where子句中建立,其語法格式為:

select colunm_name1,colunm_name2

from table_name1

left join table_name2

on table_name1.colunmname=table_name2.colunmname

其中join_table指出參與連線操作的表名,連線可以對同乙個表操作,也可以對多表操作,對同乙個表操作的連線稱為自連線, join_type 為連線型別,可以是left join 或者right join 或者inner join 。

on (join_condition)用來指連線條件,它由被連線表中的列和比較運算子、邏輯運算子等構成。

3樓:匿名使用者

通過contract_project做中間表就行:

select *

from contract_project aleft join project b on a.projectid = b.projectid

left join contract c on a.contractid = c.contractid

前提是contract_project要大而全,包含所有的pid和cid,不然不行

4樓:匿名使用者

看的頭暈啊,呵呵,難的想

sql多表聯查詢,sql多表聯合查詢

可以用謂詞或聯結實現 連線實現 select from b join a on b.id a.id where a.b 21 聯結實現的條件是兩表id來自同一值域,表示意義相同.在連線時其實兩可以作成乙個表的 也就是id,a.b,a.c,b.b.b.c 但由於空值的問題,導致了部分依賴所以才會拆分成...

SQL多表條件查詢

3個表直接join就可以了。select a.故障,sum c.數量 as 數量from 故障 a,隨工記錄 b,隨工明細 cwhere a.類別 a1 and cast b.日期 as datetime between 2008 4 2 and 2008 4 3 and a.故障 c.故障 and...

sql多對多關係的兩表如何聯合查詢出所有的結果

1 語句如下 select project.contract from project left join contract project on project.projectid contract project.projectid left join contract on contract ...