作者paranoia5201 (社会黑暗、行路难)
看板Database
标题[SQL ] 考题语法请教
时间Tue Jun 11 23:52:24 2019
以下有两个资料表:
> customers
C_ID Name City Address Phone
1 张一 台北市 XX路100号 02-123456789
2 王二 新竹县 YY路200号 03-123456789
3 李三 高雄县 ZZ路300号 07-123456789
> orders
O_ID OrderNO C_ID
1 2572 3
2 7375 3
3 1054 1
4 7520 1
5 1257 2
(1)找出每位客户的订单总数及最後那笔订单编号。
我的解法:
select customers.Name, count(orders.C_ID) as OrderNumber,
max(OrderNO) as LastOrderNum
from customers, orders
where customers.C_ID = orders.C_ID
group by orders.C_ID
依照乡民建议修改。
(2)修改订单编号1257的客户电话为03-87654321。
我的解法:
select customers.C_ID, customers.Name, customers.City, customers.Address,
replace (customers.Phone, '03-12345678', '03-87654321') as Phone
from orders, customers
where customers.C_ID = orders.C_ID and
orders.OrderNO = 1257
这里用replace处理,但是不确定与update的差别,是指资料库内容有无更新吗?
(3)复制张一最後一笔订单的资料,新增至orders(PK: O_ID)
我的解法:
想到的方式是create table然後全部重key,这样很笨但是暂时查无好方法。
再麻烦各位解答了,感谢~~
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 123.194.164.43 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Database/M.1560268346.A.7B9.html
1F:推 Phenomenon: MAX(OrderNumber) 试试 06/12 00:37
感谢建议,更新後解法修改在内文。
2F:→ iv0813: update a 06/12 09:51
3F:→ iv0813: set a.phone=03-87654321 06/12 09:51
4F:→ iv0813: from customers a 06/12 09:52
5F:→ iv0813: join order b on a.c_id =b.c_id 06/12 09:52
6F:→ iv0813: and b.orderno=1257 06/12 09:53
本人资质驽钝,有点看不懂,不过有更新语法在内文,还请指导。
※ 编辑: paranoia5201 (123.194.164.43 台湾), 06/12/2019 11:41:36
※ 编辑: paranoia5201 (123.194.164.43 台湾), 06/12/2019 11:44:39
7F:推 far0802: 2的解法你可以去google update join 06/12 13:25
8F:推 far0802: 3的解法则是1的解法再增加where name='张一',再insert 06/12 13:27
9F:→ far0802: 回orders这张表 06/12 13:27
10F:→ far0802: 2是要你做update,你用select是没有作用的 06/12 13:28
11F:→ far0802: 建议你可以先google了解DML,DQL的差异 06/12 13:33
12F:→ funk6478: replace只作用在你查询的结果 不会修改DB里的值 06/12 17:05
13F:→ funk6478: 第2题看题目叙述 应该是要你用update 06/12 17:10
14F:推 hmsDEBBIE: 你串表要from a join b on a.ID=b.ID 而不是直接写from 06/16 22:19
15F:→ hmsDEBBIE: a, b 06/16 22:19
16F:→ hmsDEBBIE: 你更新在内文的写错了 推iv大写的 06/16 22:20