[SQL ] 考题语法请教

楼主: paranoia5201 (迈向研究生)   2019-06-11 23:52:24
以下有两个资料表:
> 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,这样很笨但是暂时查无好方法。
再麻烦各位解答了,感谢~~
作者: Phenomenon (Kuma)   2019-06-12 00:37:00
MAX(OrderNumber) 试试
作者: iv0813 (iv0813)   2019-06-12 09:51:00
update aset a.phone=03-87654321from customers ajoin order b on a.c_id =b.c_idand b.orderno=1257
作者: far0802 (fruit.)   2019-06-12 13:25:00
2的解法你可以去google update join3的解法则是1的解法再增加where name='张一',再insert回orders这张表2是要你做update,你用select是没有作用的建议你可以先google了解DML,DQL的差异
作者: funk6478 (大恩)   2019-06-12 17:05:00
replace只作用在你查询的结果 不会修改DB里的值第2题看题目叙述 应该是要你用update
作者: hmsDEBBIE (*黛比*)   2019-06-16 22:19:00
你串表要from a join b on a.ID=b.ID 而不是直接写froma, b你更新在内文的写错了 推iv大写的

Links booklink

Contact Us: admin [ a t ] ucptt.com