復合sql
A. sql復合查詢
應以部門為主
,進行左連接查詢,這樣,如果一個部門一個人員都沒有也可以查出該部門是0人
SELECT
b.bm_name
部門名稱
,
COUNT(a.u_bm)
部門人數
FROM
部門表
b
LEFT
JOIN
員工表
a
ON
a.u_bm
=
b.bm_id
GROUP
BY
b.bm_name
B. 請問SQL怎樣可以復合查詢
這個簡單,一個group by 就可以實現了
select id,count(id) from A where 名稱='五味子' or 名稱='棗仁' group by id
C. SQL的復合查詢語句
sql聯合查詢語句(兩張表)是:
select A.ID,A.VALUE,A.TYPE,A.NAME,B.KEY,B.ID,B.VALUE,B.NAME
min(VALUE),max(VALUE) from A left join B on A.ID = B.ID
where B.NAME="你輸入的名字"
and B.VALUE > (select min(VALUE) from B where NAME="你輸入的名字"))
and B.VALUE < (select min(VALUE) from B where NAME="你輸入的名字"));
延展閱讀:
A表欄位stuid,stuname。
B表欄位bid,stuid,score,coursename,status。
要用一條sql查出A表中所有記錄的對應的stuid,max(score),coursename,status,並且status=1,sql語句要求跨資料庫,不能使用rownum,top,limit等方言。
比如數據:
A
D. sql查詢 復合主鍵的查詢語句怎麼寫
查詢什麼,哪個列組合是主鍵?sql語句復合主鍵有2種比較常用的寫法
,假如表a
,是以a1,a2組合作為主鍵,一種是同時寫出a1,a2條件,一種是a1||a2作為主鍵
E. 在SQL中,什麼是復合主鍵
當一個欄位無法確定唯一性的時候,需要其他欄位來一起形成唯一性。就是說用來組成唯一性的欄位如果有多個就是聯合
主鍵
如
學生成績(
學號
,課程號,成績)
那學號和課程號就可以做為聯合主鍵.
因為學號和課程號決定了成績.也就是說.你要知道成績..你就要知道學號,知道學號,但還不能知道某一科的成績.還要知道課程號.
所以
函數依賴
關系是{學號,課程號}->{成績}
alter
table
tb
add
constraint
PK_ID
primary
key(學號,課程號)
go
F. sql復合查詢語句
selectt0.itemcode,t0.quantity--,t1.*,t1.docstatus,t1.canceled,t1.docdate
frompch1t0
leftjoinopcht1ont0.[DocEntry]=t1.[DocEntry]
where
t1.docdate<'2017-12-01'--條件1
andt0.itemcode='GD01002'-----條件2
union----關鍵部分,欄位一樣時,可以通過union鏈接成一個語句,當部分查詢欄位沒有時,可以根據類型補空或者0
select--t0.itemcode,t0.quantity--,t1.*,t1.docstatus,t1.canceled,t1.docdate
sum(t0.quantity)
fromign1t0
leftjoinoignt1ont0.[DocEntry]=t1.[DocEntry]
WHERE
t1.docdate<'2017-12-01'--條件1
andt0.itemcode='GD01002'-----條件2
groupbyt0.itemcode
……--後面繼續就行
--第二種,建臨時表
if(object_id('temp..#a')>0)
droptable#a
createtable#a
(
itemcodevarchar(100),
quantityint,
docstatusint,
canceledint,
docdatedate
)
insertinto#a(quantity,docstatus,docstatus,canceled,docdate)
selectt0.itemcode,t0.quantity--,t1.*,t1.docstatus,t1.canceled,t1.docdate
frompch1t0
leftjoinopcht1ont0.[DocEntry]=t1.[DocEntry]
where
t1.docdate<'2017-12-01'--條件1
andt0.itemcode='GD01002'-----條件2
insertinto#a(quantity,docstatus,docstatus,canceled,docdate)
select--t0.itemcode,t0.quantity--,t1.*,t1.docstatus,t1.canceled,t1.docdate
sum(t0.quantity)
fromign1t0
leftjoinoignt1ont0.[DocEntry]=t1.[DocEntry]
WHERE
t1.docdate<'2017-12-01'--條件1
andt0.itemcode='GD01002'-----條件2
groupbyt0.itemcode
……--繼續插入數據
--最後查詢
select*from#a
--關於存儲過程
Createprocsp_Test
(
@ddate,
@codevarchar(100)
)
as
begin
--這里只放一個語句,用於參數的示例,只需要將上面的語句放到存儲過程中,並將參數替換就可以了
select--t0.itemcode,t0.quantity--,t1.*,t1.docstatus,t1.canceled,t1.docdate
sum(t0.quantity)
fromign1t0
leftjoinoignt1ont0.[DocEntry]=t1.[DocEntry]
WHERE
t1.docdate<@d--條件1
andt0.itemcode=@code-----條件2
groupbyt0.itemcode
end
G. SQL怎樣可以復合查詢
1.insert into [部門表](bm_id,bm_name)values(1,'bm1')
2.insert into [部門表](bm_id,bm_name)values(2,'bm2')
3.insert into [部門表](bm_id,bm_name)values(3,'bm3')
4.insert into [部門表](bm_id,bm_name)values(4,'bm4')
5.insert into [員工表](u_name,u_bm)values('q',3)
6.insert into [員工表](u_name,u_bm)values('q',4)
7.insert into [員工表](u_name,u_bm)values('q',1)
8.insert into [員工表](u_name,u_bm)values('q',2)
9.select max(bm_name),sum(1) from [部門表]left join [員工表] on bm_id=u_bm
H. 幾種常見復合sql查詢語句的linq寫法
1.IN 語句
嘗試了很多次,好象linq死活不生成in語句,無奈只能做了下變換
例,要找出手機大類以及手機下屬所有子類的產品 (手機大類的ID為D0C37275-2279-4590-A679-C65A4F28918F)
效果上等效於或linq to sql的等效寫法:或varquery=frompindb.T_Proctsjoincindb.T_Classesonp.F_CLSIDequalsc.F_IDwhere
c.F_ID==newGuid(
D0C37275-2279-4590-A679-C65A4F28918F)||
c.F_ParentIDStr.Contains(
D0C37275-2279-4590-A679-C65A4F28918F)selectnew
{p.F_ID,p.F_Name};varquery=frompindb.T_Proctsfromcindb.T_Classeswhere
p.F_CLSID==
c.F_ID&&(c.F_ID==newGuid(
D0C37275-2279-4590-A679-C65A4F28918F)||
c.F_ParentIDStr.Contains(
D0C37275-2279-4590-A679-C65A4F28918F))selectnew
{p.F_ID,p.F_Name};Select
P.F_ID,P.F_Name,P.F_ClsIDFromT_ProctAs
P,T_ClassAsCwhere
P.F_ClSID=
C.F_IDAnd(
C.F_ID='D0C37275-2279-4590-A679-C65A4F28918F'OR
C.F_ParentIdStrlike'%D0C37275-2279-4590-A679-C65A4F28918F%')Select
P.F_ID,P.F_Name,P.F_ClsIDFromT_ProctAsPInnerJoinT_ClassAsCOn
C.F_ID=
P.F_CLSIDwhere
I. sql 復合函數
在查詢項中加上b.num
J. C# 拼接復合SQL語句
string str = "";
//如果都不填寫,那麼字元串為空
if(textBox書名.text == "" && textBox類目.text == "" && ... ...)
{
str = "";
}
else
{
//否則開始拼字元串條件
str = " where ";
if(textBox書名.text != "")
{
str+= "書名=" + textBox書名.text + " and ";
}
if(textBox類目.text !="")
{
str+= "類目=" + textBox類目.text + " and";
}
......
}
//最後將字元串最後的 空格與and 去掉,這個方法好象是這樣寫,如果不對你再改改,反正你就想辦法去掉最後4個字元就行了
str = subString(str, 0, str.lenth-4);
然後 "select * from BOOK"+str;