❶ sql如何實現多表查詢
大體上的方法有兩種
(1)聯合查詢
select dbo.vipcard.cardno,........,dbo.viptype.typename as cardtype from dbo.vipcard inner join dbo.viptype on dbo.vipcard.cardtype=dbo.viptype.ctypeid
(2)子查詢
select dbo.vipcard.cardno,........,(select typename from viptype where dbo.vipcard.cardtype=dbo.viptype.ctypeid) as cardtype from dbo.vipcard
❷ sql多表查詢 條件
SELECT 需要顯示的欄位
FROM 表旦沖薯一,表二
WHERE 表一.姓名=表二.姓名
AND 表二.學期=(SELECT MAX(學期) FROM 表判晌二);
實例如下:
CREATE TABLE t1(
s_id VARCHAR2(10),--學號
s_name VARCHAR2(10),--姓名
s_class VARCHAR2(10) --班級
);
CREATE TABLE t2(
s_id VARCHAR2(10),--學號
s_name VARCHAR2(10),--姓名
score NUMBER, --成模者績
semester VARCHAR2(10) --學期
);
INSERT INTO t1 VALUES('111','Sam','999');
INSERT INTO t1 VALUES('112','Jim','999');
INSERT INTO t2 VALUES('111','Sam',99,'200801');
INSERT INTO t2 VALUES('111','Sam',98,'200802');
INSERT INTO t2 VALUES('112','Jim',97,'200801');
INSERT INTO t2 VALUES('112','Jim',96,'200802');
COMMIT;
SELECT t1.s_id,t1.s_name,t1.s_class,t2.score,t2.semester
FROM t1,t2
WHERE t1.s_id=t2.s_id
AND semester=(SELECT MAX(semester) FROM t2);
SELECT t1.s_id 學號,t1.s_name 姓名,t1.s_class 班級,t2.score 成績,t2.semester 學期
FROM t1,t2
WHERE t1.s_id=t2.s_id
AND semester=(SELECT MAX(semester) FROM t2);
❸ sql語句 以id 為條件查詢多個表 怎麼查
你說的沒完全明白。
有幾個表,表裡有個欄位叫aid,然後就不懂了。
給你的思路,你昌梁的目的是什麼,通過這幾個表你要查詢出什乎豎么來?這個是大前提。
然後你改的SQL,改完了去資料庫里執行以下,馬上就知道對還是不對,調試的時候保證SQL是正確的。
你這么個查詢肯定不行,多表查詢,要給出查詢條件,歲迅大你的這個查詢條件資料庫無法判斷這個欄位時從哪個表裡出來的,自然會報錯
❹ sql多表聯合查詢步驟是什麼
有內聯左聯右聯具體欄位需要表名加上欄位也可以把表名as為一個簡單的單詞
例如表a有欄位:學號課程表b有欄位:學號姓名查詢每個學生姓名和對應的課程
內聯:selecta.課程,b.姓名fromainnerjoinbona.學號=b.學號
左聯:selecta.課程,b.姓名fromaleftjoinbona.學號=b.學號
右聯:selecta.課程,b.姓名fromarightjoinbona.學號=b.學號
內聯是表a和b內容都匹配的才顯示
左聯是匹配左邊這張表內容後面on和where條件匹配的話顯示左邊這張表的所有數據
右聯和左聯一樣理解
❺ SQL多表多條件查詢
selectmax(Aname),max(Adatetime),max(Btitle),max(Bdatetime)from(
selectA.nameAname,A.datetimeAdatetime,''Btitle,'局粗'Bdatetimefrom喚臘磨AwhereA.place=1
unionall
select'','和斗',B.title,B.datetimefromBwhereB.place=1)T
❻ 如何使用SQL語句進行多表查詢
使用sql語句進行多表查詢需要使用資料庫的連接。
sql中德鏈接分為內鏈接,外連接(左外連接,右外連接),交叉鏈接
根據業務的不同選取不同的連接方式。
內連接:
select * from student a
inner join stumark b
on a.stuid=b.stuid
左外連接
select * from student a
left join stumark b
on a.stuid=b.stuid
右外連接
select * from stumark a
right join student b
on a.stuid=b.stuid
交叉連接
select * from stumark a
crossjoin student b
on a.stuid=b.stuid
❼ SQL多表查詢的條件問題
就是連接條件
說白了就是2個表根據什麼欄位進行關聯;
關聯舉個例子說吧:
表a存儲了一個人的基本信息,如(學號、姓名、年齡等)
表b存儲了這個人的每次考試的信息(學號,成績等)
那麼這連個表是有聯系的,那麼根據什麼聯系呢,可以根據這個學員的學號進行關聯。
❽ SQL多表條件查詢
3個表直接join就可以了。
select a.故障,sum(c.數量) as 數量
from 故障襲搏 a,隨工記錄 b,隨碼帆工明細 c
where a.類別='A1' and cast(b.日期 as datetime ) between '2008-4-2' and '2008-4-3'
and a.故障=c.故障 and b.ID=c.記錄號
group by a.故障
日期似乎是字元串類型的,要轉換一拍模祥下。
❾ SQL server資料庫里查詢時新建查詢怎麼進行多表查詢
首先要檢查你的表與表之間是不是有約束(主外鍵約束),如果存在,才可以像 上面這位朋友的方式進行連接,一般連接有左連接、右連接、內連接,下面給你舉例:
----做笛卡爾積
select s.id,s.name,sc.id,sc.sname,sc.score from infom s ,score sc
------內連接 寫法一
select s.id,s.name,sc.id,sc.sname,sc.score
from infom s ,score sc inner join score sc
on s.id= sc.id ------內連接的條件
------on s.id <>sc.id --------是全集 - 交集
------where sc.score>80
------內連接 方法二
select s.id,s.name,sc.id,sc.sname,sc.score
from infom s ,score sc
where s.id= sc.id
------
-------------------------------------------------------外連接 左連接
--------------左表數據完全顯示,右表中相同的數據顯示,不同數據null
select Student.name,score.score
from Student left join score -----------------先寫的為左表
on Student.id=score .id -----------------連接條件
-------------------------------------------------------外連接 右連接
--------------右表數據完全顯示,左表中相同的數據顯示,不同數據顯示null
select Student.name,score.score
from Student right join score
on Student.id=score .id
-------------------------------------------------------全連接 full join
-------------------------------------------------------左、右表的數據完全顯示,相同的數據顯示一次
select Student.name,score.score
from Student full join score
on Student.id=score .id
-------------------------------------------------------交叉聯接
------------------------------------------交叉聯接得到的是兩表聯接所有的數據組合
------------------------------------------(A表的數據記錄* B 表的數據記錄)
-------------------------------------------方式一
select Student.*,score.* from Student,score
-------------------------------------------方式二
select score .*,Student.* from Student
cross join score
-----------------------------------------------------多表聯接
--------------------------------------要求查出張三 C#的考試成績,涉及student,score,subject三個表
---------方式一:
select student.name,subject.sname ,score .score
from Student
inner join score
on student.id= score.id
inner join subject
on score.id=subject.id
where Student.name='張三' and subject.sname='C#'
---------方式二:等值聯接
select student.name,subject.sname ,score .score
from Student,score ,subject
where StudentDB.id=score.id and score .id=subject.id
and Student.name='張三' and subject.sname='C#'