有 a , b 兩張表(參見如下圖) , b表左關聯a 表,想得到 c 的結果樣式, 嘗試了使用 select a.xx , b.xx from a left join b on a.xx = b.xx 這樣的陳述句,可結果還是不正確,并不能產生正確的笛卡兒積!

uj5u.com熱心網友回復:
按照正常的寫法就是select * from 課程資訊表 a left join 成績資訊表 b on a.PK課程式號=b.FK課程式號order by b.姓名,a.PK課程式號,所以不存在說顯示某個學生成績為null
uj5u.com熱心網友回復:
with tb(課程式號, 課程名稱) as(
select 1, 'shuxue' union all
select 2, 'yuwen' union all
select 3, 'wuli' union all
select 4, 'huaxue'
)
, tb2 (成績序號, 姓名, 課程式號, 成績) as
(
select 1, 'zs', 1, 92 union all
select 2, 'zs', 2, 95 union all
select 3, 'zs', 3, 80 union all
select 4, 'ls', 3, 93 union all
select 5, 'ls', 4, 85
)
, tmp1 as
(
select distinct 姓名 from tb2
)
select tmp1.姓名, tb.*, tb2.成績 from tb
join tmp1 on 1=1
left outer join tb2 on tb2.姓名 = tmp1.姓名 and tb2.課程式號 = tb.課程式號
uj5u.com熱心網友回復:
笛卡爾積最大可能產生 m*n 個結果,并不一定產生 m*n 個結果。uj5u.com熱心網友回復:
SELECT B.姓名,A.課程名稱,C.成績
FROM TABLE_A
JOIN (SELECT DISTINCT 姓名 FROM TABLE_B) AS B ON 1=1
JOIN TABLE_B AS C ON A.課程式號=C.課程式號 AND B.姓名=C.姓名
uj5u.com熱心網友回復:
SELECT a.student_name,a.class_name,c.coreFROM class_table a
JOIN (SELECT DISTINCT student_name FROM student_core) b on 1=1
left JOIN student_core c ON a.id=c.class_id and b.student_name=c.student_name
order by b.student_name
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/265217.html
標籤:疑難問題
上一篇:求助:創建alwayson可用性組報錯“本地節點不是仲裁的一部分”問題
下一篇:優化sql
