作者bobju (宝贝猪)
看板Database
标题Re: [SQL ] 询问SQL语法
时间Thu Apr 2 17:33:52 2009
以下仅供参考, 若需验证请自行测试. 若发现问题欢迎讨论.
掌握两个关键: ifnull 的用法, 以及 left join 的用法.
select A.id,B.Student,IFNULL(B.Score,0) as Score
from TableA as A
left join TableB as B on B.id=A.id
order by B.Student,A.id;
不过撇开SQL语法不谈, 以下table的设计本身就有点怪怪的:
从需求结果来判断, TableB的id栏位应该就是TableA的id的外键,
但在TableB当中这样的命名很容易引起混淆, 应该改一下命名.
另外, 关於学生在TableB当中缺乏记录的部份, 究竟是缺考? 还
是考零分? 或是记录遗失? 或是根本没记录? 并没有做一个可以
判断的机制, 这也是个问题. 合理的话, 应该要像这样:
Student id Score
A 002 null <- 代表缺考
B 003 0 <- 代表考零分
至少可以确定不是记录遗失或是根本没记录.
※ 引述《hammert (^^)》之铭言:
: 若我有下列二个Table
: TableA
: --------------------
: id | Name
: --------------------
: 001 | SQL
: 002 | Enligh
: 003 | Chinese
: TableB
: ------------------------
: Student | id | Score
: ------------------------
: A | 001 | 80
: A | 003 | 90
: B | 001 | 100
: B | 002 | 60
: 而我要找出的资料如下:
: 001 A 80
: 002 A 0
: 003 A 90
: 001 B 100
: 002 B 60
: 003 B 0
: 那我要怎麽写?
: 刚刚试着把二个Table join起来,但好像永远只有四笔资料
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 59.104.186.206
※ 编辑: bobju 来自: 59.104.186.206 (04/02 17:45)
1F:推 hammert:感谢大家的帮忙 04/02 21:36