JOIN是SQL當中扮演非常重要的角色,它的功能就是拿來將不同資料表進行關聯。
Day 15 我們知道為什麼要正規化、Day 16 了解關於Key的作用,
所以今天使用JOIN之前,先來建立已經正規化且設置PERMARY KEY的資料表。
-- 使用者帳號資料表
CREATE TABLE users(
id SERIAL PRIMARY KEY,
username VARCHAR(50)
);
-- 照片資料表
CREATE TABLE photos (
id SERIAL PRIMARY KEY,
url VARCHAR(200),
user_id INTEGER REFERENCES users(id)
);
-- 留言資料表
CREATE TABLE comments (
id SERIAL PRIMARY KEY,
contents VARCHAR(240),
user_id INTEGER REFERENCES users(id),
photo_id INTEGER REFERENCES photos(id)
);
接著我們來插入一些資料。
INSERT INTO users (username)
VALUES
('negativea'),
('yuhsuanl'),
('iopl'),
('leohuang'),
('billy');
INSERT INTO photos (url, user_id)
VALUES
('https://img1.jpg', 1),
('https://img2.jpg', 2),
('https://img3.jpg', 3),
('https://img4.jpg', 4),
('https://img5.jpg', 5);
INSERT INTO comments (contents, user_id, photo_id)
VALUES
('帥喔', 2, 1),
('很帥咧', 3, 1),
('帥哥', 4, 1),
('帥慘了帥慘了', 5, 1);
JOIN的方向取決於你想獲得什麼資料,例如我希望看到照片被誰留下什麼評論。
SELECT url, contents , username
FROM comments AS c
JOIN photos AS p ON c.photo_id = p.id
JOIN users AS u ON c.user_id = u.id;
你發到問答來了.
如果他射後不理的話
不用 30 天
再 30 分鐘就可以「收工完賽」了
哇!幫QQ~
有點好奇你還會寫下去嗎?如果要繼續寫,可以把這次被斷賽的來龍去脈寫出來(發文按錯鍵?),也給其他參賽者一個借鑑(?)呃⋯⋯提醒啦。
你的文章我跑去看了,已收藏,烏秋是很悍的鳥,加油加油!!
烏秋很美:)
我想這個系列我還是會持續完成它,畢竟這算是給自己的一個挑戰,就算沒有完賽紀錄,那也是沒關係的,雖然失敗就是失敗了,這種低級錯誤是沒有理由的,不過稍微描述一下失敗成因:
首次參加即裸賽,沒有庫存,幾乎是每天下班後開始寫,雖然內容有參考幾堂的線上課程、幾本書、幾篇文章,不過我仍然希望可以經過消化整理後用我腦海裡的話語來詮釋,不過也因為裸賽的關係,我每天能想到的內容跟梳理方式品質也不太一致,包含心情起伏、有沒有文思泉湧、主題性是否容易用我過去所經歷的東西去闡述都會影響,這也算是對有在追這個系列的讀者較為抱歉的地方。
書寫習慣,這個系列賽我都是先在Notion筆記進行整理與撰寫,然後再到鐵人發文,這也間接導致我失誤的原因。
當天狀態,本來是預期到圖書館撰寫文章,不過當天圖書館大家都來的很早,可以充電的座位已經被坐滿了,所以我在圖書館就看書為主,思考後續幾天的內容,要怎麼分配,因為小弟的實務經驗尚淺,也怕太快就把我的程度能夠寫的都寫完了XD,接著晚上也因為私事晚回家,這個時候已經疲倦到坐在電腦前會坐著睡著的程度了,然後盡量擠出一些東西來發文,但是坦白說這天的東西不到我預期要寫的30%內容,因為已經很累了,想要快點把發文這個動作完成,我就開啟IT邦幫忙網站按發文然後把Notion的資料貼過去,確認送出之後就昏睡了,原本是預期睡一覺之後要再把資料改的完善一點,結果就QQ了。