sql多對多
1. sql語句多對多查詢
select * from book a join (select cid,count(1) as [count] from category group by cid) b where a.id=b.cid
2. SQL 多對多查詢
1、創建測試表,
create table test_task(taskID varchar2(20),taskName varchar2(200));
create table test_person(personID varchar2(20),personName varchar2(200));
create table test_task_person(taskID varchar2(20),personID varchar2(200));
3. 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 將三個表按條件聯接在一起。
(3)sql多對多擴展閱讀
連接通常可以在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)用來指連接條件,它由被連接表中的列和比較運算符、邏輯運算符等構成。
4. SQL 多對多查詢語句
/*選擇全部課程的學生列表:
select B.student,A.num_class
from
(
select count(*) as num_class from class
) A left outer join
(
select count(*) as num_class,student from cs
group by student
) B on A.num_class = B.num_class
/* 報名多過5門課程的學生列表
select A.student,B.num_class as num_class
from
(
select student from student
) A left outer join
(
select count(*) as num_class,student from cs
group by student
) B on A.student = B.student
where num_class >5
5. sql 多對多查詢
select *
from
(select id,sum(money) as mm from a表 group by id) aaa,
(select id,sum(money) as nn from b表 group by id) bbb
where aaa.id=bbb.id and aaa.mm=bbb.nn;
-----------------------------
說明:
先用語句,得到aaa,bbb兩個臨時表,裡面是(ID,錢的求和);
然後疊加一個查詢,從表aaa,表bbb中,用條件,篩選出需要的記錄(ID相等,錢求和相等);mm,nn是我為了欄位查看方便,設置的兩個臨時欄位名。
-----------------------------
如果你是用workbench,語句正確執行要寫成一行。
6. SQL的一對多,多對一,一對一,多對多什麼意思
1、一對多:比如說一個班級有很多學生,可是這個班級只有一個班主任。在這個班級中隨便找一個人,就會知道他們的班主任是誰;知道了這個班主任就會知道有哪幾個學生。這里班主任和學生的關系就是一對多。
2、多對一:比如說一個班級有很多學生,可是這個班級只有一個班主任。在這個班級中隨便找一個人,就會知道他們的班主任是誰;知道了這個班主任就會知道有哪幾個學生。這里學生和班主任的關系就是多對一。
3、一對一:比如說一個班級有很多學生,他們分別有不同的學號。一個學生對應一個學號,一個學號對應一個學生;通過學號能找到學生,通過學生也能得到學號,不會重復。這里學生和學號的關系就是一對一。
4、多對多:比如說一個班級有很多學生,他們有語文課、數學課、英語課等很多課。一門課有很多人上,一個人上很多門課。這里學生和課程的關系就是多對多。
7. 求助在sql中多對多怎麼建表
首先建立兩個表分別對應兩個實體然後建立第三張表作為中間表將之前建好的兩個表的主鍵在中間表中做聯合主鍵這樣就將兩張表的多對多關系聯系起來了我舉個例子一條微博可能屬於多個話題一個話題中也包含多條微博--------------話題表------createtabletopic(topicidintprimarykey,keywordnvarchar2(50)notnull,topictypenvarchar2(50)notnullcheck(topictypein('生活','情感','娛樂','電影','電視','體壇','財經','科技','文化','媒體沙龍')),);-----、微博表——————createtableweibo(weiboidintprimarykey,userIDint,textnvarchar2(140)notnull,);---------、話題微博表createtabletopicWeibo(topicweiboidintprimarykey,weiboidintreferencesweibo(weiboid),topicidintreferencestopic(topicid));