多對多關係的多表關聯查詢

2021-08-27 20:55:36 字數 3953 閱讀 4373

出處:

下面我就舉個比較好理解的例子來說明這個概念。學生和學生所選的選修課之間的關係,就符合多對多的關係,怎麼理解呢?乙個學生可能會選擇多門選修課,而,一門選修課則可能會對應多個學生,下面我以此為例子來說明這個問題。

alter table stu_ref_sub add constraint fk_student foreign key(student_id) references student(id);
alter table stu_ref_sub add constraint fk_subject foreign key(subject_id) references subject(id);
alter table stu_ref_sub add constraint pk_stu_ref_sub primary key(student_id,subject_id);
insert into student values('stu001','李白',25);insert into student values('stu002','杜甫',26);insert into student values('stu003','歐陽修',27);insert into student values('stu004','岳飛',26);insert into student values('stu005','柳永',28);

insert into subject values('sub001','網球課');insert into subject values('sub002','詩詞課');insert into subject values('sub003','計算機');insert into subject values('sub004','桌球');insert into subject values('sub005','籃球課');

insert into stu_ref_sub values('stu001','sub001');insert into stu_ref_sub values('stu001','sub003');insert into stu_ref_sub values('stu001','sub004');insert into stu_ref_sub values('stu002','sub002');insert into stu_ref_sub values('stu002','sub004');

insert into stu_ref_sub values('stu004','sub001');

insert into stu_ref_sub values('stu004','sub005');

insert into stu_ref_sub values('stu005','sub003');

selectstudent.name '學生名稱',subject.name '課程名稱'fromstudent,

selectt1.student '學生姓名',max(case t1.course when '網球課' then '網球課' else '0' end) '課程一',max(case t1.course when '計算機' then '計算機' else '0' end) '課程二',max(case t1.course when '籃球課' then '籃球課' else '0' end) '課程三',

max(case t1.course when '桌球' then '桌球' else '0' end) '課程四',

max(case t1.course when '詩詞課' then '詩詞課' else '0' end) '課程五'

1.在將豎表轉化為橫表的時候,筆者在這裡使用了聚合函式max(),需要注意的是,聚合函式max()不僅可以作用於數值型別的資料,還可以作用於字串型別資料和日期時間型別的資料。而sum(),只是作用於數值型別資料,用於返回指定資料的和,空值會被預設忽略。

Hibernate多對多關聯關係

今天遇到乙個問題 有乙個的類reckoning,乙個類accountitem。這兩個類之間的關係時多對多的關聯關係。一開始是由accountitem來維護關聯關係的,也就是reckoning.hbm.xml檔案中的如下 將inverse的值設為true.set name accountitems t...

TP6模型多對多關聯查詢

user模型 class user extends model 多對多關聯查詢 user表查詢條件 map role表查詢條件 where data user with roles function query use where where map select 或 user表查詢條件 map r...

多表關聯查詢

表別名 多個表之間存在同名的列,則必須使用表明來限制列的引用 內連線 自連線 內連線就是關聯的兩張或多張表中,根據關聯條件,顯示所有匹配的記錄,匹配不上的,不顯示 自連線,就是把一張表取兩個別名,當做兩張表來使用,自己和自己關聯。select columns list from table name...