[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