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 ...