① sql多對多關系的兩表如何聯合查詢出所有的結果
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 將三個表按條件聯接在一起。
(1)sqlserver2008聯合查詢擴展閱讀
連接通常可以在select語句的from子句或where子句中建立,其語法格式為:
selectcolunm_name1,colunm_name2
fromtable_name1
leftjointable_name2
ontable_name1.colunmname=table_name2.colunmname其中join_table指出參與連接操作的表名,連接可以對同一個表操作,也可以對多表操作,對同一個表操作的連接稱為自連接, join_type 為連接類型,可以是left join 或者right join 或者inner join 。
on (join_condition)用來指連接條件,它由被連接表中的列和比較運算符、邏輯運算符等構成。
② sql server 資料庫聯合查詢、並匯總 去重
--你要匯總的是c.num這個欄位吧,可以用groupby分類匯總,sum(c.num)
③ sql server怎麼把多個查詢結果關聯起來
select * from a left join B on a.id=b.id where b.id is null --a的id 不在b表中的
同理
select * from b left join a on a.id=b.id where a.id is null --b的id不在a表中的
④ 緊急求助:關於SQL SERVER的聯合查詢
用UNION ALL 將兩張表合並為一個結果集
select idtype,code,name,qty,price,zj
from 銷售表
union all
select idtype,code,name,qty,price,zj
from 退貨表
如果1表示銷售出去的商品,-1表示退回的商品那麼
求銷售總計的語句是
select sum(idtype*zj ) as 銷售總計
from
(
select idtype,code,name,qty,price,zj
from 銷售表
union all
select idtype,code,name,qty,price,zj
from 退貨表
) a
⑤ 在SQL Server 2008中,怎樣進行多表聯合查詢還有那個group by到底有什麼作用要詳細的解答和例子!謝了
group by 是用來分組查詢的,例如部門和雇員之間用一個外鍵連接著,在查詢雇員時可以用部門的ID來分組查詢
select avg(salary) from employee group by deptno;
這句就是用來按部門編號查詢每個部門員工平均薪水
⑥ SQL Server兩表聯合查詢問題
declare @tab1 table (id int,value nvarchar(20) null)
declare @tab2 table (id int,value nvarchar(20))
insert into @tab1
select 1,'1'
union
select 2,'2'
union
select 3,null
union
select 4,'3'
insert into @tab2
select 1,'A'
union
select 2,'B'
union
select 3,'C'
update a set a.value=b.value
from @tab1 a
left join @tab2 b
on convert(int,a.value)=b.id
where convert(int,a.value)=b.id
select * from @tab1
⑦ SQL 選擇性聯合查詢
創建表及插入數據
createtablea
(datevarchar(10),
namevarchar(1),
markint)
insertintoavalues('2014/12/1','A',5)
insertintoavalues('2014/12/1','B',2)
insertintoavalues('2014/12/1','C',5)
insertintoavalues('2014/12/2','A',4)
insertintoavalues('2014/12/2','B',6)
insertintoavalues('2014/12/2','C',6)
insertintoavalues('2014/12/3','A',9)
insertintoavalues('2014/12/3','B',8)
createtableb
(datevarchar(10),
qtyint)
insertintobvalues('2014/12/1',1111)
insertintobvalues('2014/12/2',5123)
insertintobvalues('2014/12/3',4532)
執行
selectt1.date,t1.name,t1.mark,t2.qty
from
(selecta.*,ROW_NUMBER()over(partitionbydateorderbyname)rnfroma)t1
leftjoin(selectb.*,1rnfromb)t2
ont1.date=t2.dateandt1.rn=t2.rn
結果截圖
以上環境為sqlserver2008r2,你sqlserver2005以上版本或oracle10g以上版本應該都沒問題
⑧ SQLSERVER中兩個表聯合條件查詢,子查詢較多,煩請大神出手看看這條SQL該怎麼改執行效率可以高
樓主好,這樣寫確實是耽誤效率。根據樓主的要求,其實可以先全部關聯,然後where篩選後在外圍匯總。具體SQL如下:
selecta.id,a.uName,
sum(casewhenb._type=1andS=2thens1else0end)asa,
sum(casewhenb._type=1andS=2thens2else0end)asb,
sum(casewhenb._type=2andS=2thens1else0end)asc,
sum(casewhenb._type=2andS=2thens2else0end)asd,
sum(casewhenb._type=3andS=2thens1else0end)ase,
sum(casewhenb._type=3andS=2thens2else0end)asf,
from_Usera
join_Taskbona.id=b._User
wherea.T=1
groupbya.id,a.uName
這樣效率應該會高一些。
⑨ SQL Server中三個表兩兩關聯 怎麼實現查詢急!!
select a.*
from 學員表 a
inner join 校區表 b on a.所在學校=b.所在學校
inner join 管理員表 c on b.區域=c.區域
where c.用戶名=@用戶名 and c.密碼=@密碼
注意:最好把登陸和列表查詢分開來做,因為無論是從安全還是程序實現的角度來看,都比較好。
查詢語句:
SELECT p.id, p.url, p.description, GROUP_CONCAT(f.`name`)
from tb_pic p, tb_pic_flag_link l, tb_flag f
where p.id = l.pic_id and l.flag_id=f.id GROUP BY p.id;