iT邦幫忙

1

Day 17 關於JOIN

  • 分享至 

  • xImage

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;
看更多先前的討論...收起先前的討論...
你發到問答來了.
咖咖拉 iT邦好手 1 級 ‧ 2022-09-18 07:56:09 檢舉
真的收工完賽了..
harry xie iT邦研究生 1 級 ‧ 2022-09-18 09:43:22 檢舉
這應該要叫斷賽吧...,幫 QQ
啾啾丸 iT邦新手 3 級 ‧ 2022-09-18 10:55:38 檢舉
感謝各位大大提醒,但是QQ了,昨天發文已經神智不清了QQ
froce iT邦大師 1 級 ‧ 2022-09-19 11:39:32 檢舉
呼叫站方一下搞不好能算你合規,問一下吧
啾啾丸 iT邦新手 3 級 ‧ 2022-09-20 08:42:21 檢舉
謝謝force大大,理論上是改資料庫能夠辦到,但這會站方造成困擾,所以我不打算這麼做,萬一我開了先例,那麼只會讓站方未來難做事,能夠參加這個賽事的機會已經非常開心了。
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
0
海綿寶寶
iT邦大神 1 級 ‧ 2022-09-17 23:33:24

你發到問答來了.

如果他射後不理的話
不用 30 天
再 30 分鐘就可以「收工完賽」了
/images/emoticon/emoticon29.gif

啾啾丸 iT邦新手 3 級 ‧ 2022-09-18 10:56:22 檢舉

真的...

往好處想
比起在第27天才犯這個錯誤
現在才17天,真是好多了
/images/emoticon/emoticon12.gif

啾啾丸 iT邦新手 3 級 ‧ 2022-09-18 17:50:41 檢舉

沒錯,正能量正起來!

0
janlin002
iT邦好手 1 級 ‧ 2022-09-18 09:22:08

恭喜完賽

啾啾丸 iT邦新手 3 級 ‧ 2022-09-18 10:56:37 檢舉

T口T不要這樣

0
W.H.
iT邦新手 1 級 ‧ 2022-09-18 16:42:54

哇!幫QQ~

有點好奇你還會寫下去嗎?如果要繼續寫,可以把這次被斷賽的來龍去脈寫出來(發文按錯鍵?),也給其他參賽者一個借鑑(?)呃⋯⋯提醒啦。
你的文章我跑去看了,已收藏,烏秋是很悍的鳥,加油加油!!/images/emoticon/emoticon76.gif

看更多先前的回應...收起先前的回應...
啾啾丸 iT邦新手 3 級 ‧ 2022-09-18 17:40:41 檢舉

烏秋很美:)

我想這個系列我還是會持續完成它,畢竟這算是給自己的一個挑戰,就算沒有完賽紀錄,那也是沒關係的,雖然失敗就是失敗了,這種低級錯誤是沒有理由的,不過稍微描述一下失敗成因:

  1. 首次參加即裸賽,沒有庫存,幾乎是每天下班後開始寫,雖然內容有參考幾堂的線上課程、幾本書、幾篇文章,不過我仍然希望可以經過消化整理後用我腦海裡的話語來詮釋,不過也因為裸賽的關係,我每天能想到的內容跟梳理方式品質也不太一致,包含心情起伏、有沒有文思泉湧、主題性是否容易用我過去所經歷的東西去闡述都會影響,這也算是對有在追這個系列的讀者較為抱歉的地方。

  2. 書寫習慣,這個系列賽我都是先在Notion筆記進行整理與撰寫,然後再到鐵人發文,這也間接導致我失誤的原因。

  3. 當天狀態,本來是預期到圖書館撰寫文章,不過當天圖書館大家都來的很早,可以充電的座位已經被坐滿了,所以我在圖書館就看書為主,思考後續幾天的內容,要怎麼分配,因為小弟的實務經驗尚淺,也怕太快就把我的程度能夠寫的都寫完了XD,接著晚上也因為私事晚回家,這個時候已經疲倦到坐在電腦前會坐著睡著的程度了,然後盡量擠出一些東西來發文,但是坦白說這天的東西不到我預期要寫的30%內容,因為已經很累了,想要快點把發文這個動作完成,我就開啟IT邦幫忙網站按發文然後把Notion的資料貼過去,確認送出之後就昏睡了,原本是預期睡一覺之後要再把資料改的完善一點,結果就QQ了。

W.H. iT邦新手 1 級 ‧ 2022-09-18 18:31:01 檢舉

感謝分享!!

看來屯稿似乎有其必要。如果不屯稿,或許可以早一點開始:例如9/16是開賽最後一天,那就9/14開始寫,然後0:01 a.m. on 9/16 就發文,每天維持在凌晨零點發文,就算有問題,還有睡醒後的⅔天可以修改哩。

話說我今年本來也想參加自我挑戰組或影片教學組,但因另有要務(?),所以決定明年參賽,希望明年能共襄盛舉囉~

很高興你要持續寫下去,我會持續follow的!!

(又,山烏秋/小卷尾更美,不過不容易見到就是了,我是在Youtube看的~)

Felix iT邦研究生 2 級 ‧ 2022-09-19 18:06:22 檢舉

買個經驗吧,明年加油!

啾啾丸 iT邦新手 3 級 ‧ 2022-09-20 08:44:52 檢舉

(1) W.H.大大的建議值得參考!筆記收下(謝囉,還沒買望遠鏡阿!(捶手
(2) 感謝Felix的加油打氣

不明
【**此則訊息已被站方移除**】

我要發表回答

立即登入回答