iT邦幫忙

0

請問如何結合查詢

kushu 2 年前3066 瀏覽

請教:
我有三張表
表1 carsave 記錄貨車

表2 carware 倉庫名稱

表3 caryear 年份

想要列出
起點跟終點為台中的所有紀錄
排序
cad_id
car_out(要顯示為中文)
car_in(要顯示為中文)
car_year(要顯示年份)
a01(顯示貨物數量)

請問我該如何多張表結合查詢

看更多先前的討論...收起先前的討論...
老鷹(eagle) iT邦高手 1 級 ‧ 2 年前 檢舉
......地溝油失神
老鷹(eagle) iT邦高手 1 級 ‧ 2 年前 檢舉
...就用join.....
很久很久之前好像有跟樓主說過
kushu iT邦新手 5 級 ‧ 2 年前 檢舉
chingfeng 你好
SQL語法邏輯我還是沒能理解
我知道要用JOIN去合併 但是寫法不能理解
自己試了2天了 一直出現錯誤
主要是代號要轉成中文又卡在一列紀錄有3個
參考過之前的 只能搞出一個合併 多張表好難哭
danking iT邦研究生 3 級 ‧ 2 年前 檢舉
如果可以吸收這些別人的知識..
當然不是指照抄...而是要理解為什麼這樣寫..
那麼假以時日..你也會功力大增的!
灑花
外獅佬 iT邦大師 1 級 ‧ 2 年前 檢舉
出錯的時候...請有耐心地去讀完錯誤..然後找答案
初學者的態度,不應該是出錯的時候,連看都不看,把錯誤訊息拋上網找解答
那對你有什麼幫助?
因為...根據回答裡的錯誤..發現,您只會copy & paste...
連欄位名稱錯了,都自己沒辦法察覺
請問,您有什麼資格回嗆mis2000lab老師?
外獅佬 iT邦大師 1 級 ‧ 2 年前 檢舉
如果是你依照大家的建議自己實作,卻依然錯誤
那我們道歉
如果只是因為你只會copy & paste,然後熱心的邦友只是因為打錯字而導致您的失敗
那誰該負責?
kushu iT邦新手 5 級 ‧ 2 年前 檢舉
wiselou 您好
忽然發現這個地方.不給菜鳥生存
欄位名稱是我自己打錯.是我自己改的
就說了是新手.突然跳出一個1054我哪知道是什麼問題
至於您把我當成複製&貼上.這我就不知道您是怎麼想了
上次wonton 教的
LEFT JOIN (SELECT car_in, SUM(amount) input FROM car_save GROUP BY car_in) ci ON ci.car_in = warehouse.warehouse_id
並沒有把三張表串在一起顯示中文
我也去翻了我買的爛書 只能結合1個
查了GOOGLE 也是.或許有多表.但滿滿的E文沒有中文解釋.搞不好都還會把欄位名當成是指令
很多時候書上都只寫得很基本.請問您都買什麼書寫得這麼詳細.推薦一下吧
大家的建議自己實作,卻依然錯誤 我會繼續耐心請教的
上次發問關閉視窗.沒有解決.我也是很禮貌的繼續請教
請不用這樣一竿子打翻一船人
我也知道網路上有一堆只想撿現成的.也沒必要搞到看到黑影就開槍吧
會回mis2000lab話實在是因為他一出口就當我是來撿現成的
我是不知道是我笨嗎? 你們如果換去學別的也都是買買書就會了?
都不會有問題.問問別人?
OK IT人最大 菜鳥該死 我到底在跟你解釋什麼
網路一堆您這種人 如果您不肯教 我問別人便是
多比別人會一點 沒什麼好臭屁的 心要有量
外獅佬 iT邦大師 1 級 ‧ 2 年前 檢舉
不好意思
造成您的不適
但是,小弟我看到的是...
您連自己欄位名稱錯誤都不自知...
不解釋
外獅佬 iT邦大師 1 級 ‧ 2 年前 檢舉
您不需要解釋什麼
您對自己的問題都不甚理解,
還需要解釋什麼?
您自己都沒看出熱心的邦友打錯字造成的失誤
一昧只會回覆錯誤訊息
那到底算什麼?
外獅佬 iT邦大師 1 級 ‧ 2 年前 檢舉
哪裡不給菜鳥生存?
只要是問題是經過消化,仍不解的問題
即使連select...join都不會
邦友都很樂意幫忙
但是...只是因為打錯字
您自己覺得呢?
外獅佬 iT邦大師 1 級 ‧ 2 年前 檢舉
kushu提到:
查了GOOGLE 也是.或許有多表.但滿滿的E文沒有中文解釋.搞不好都還會把欄位名當成是指令

所以,您根本連自己的資料表有哪些欄位都搞不清楚....
落寞
一級屠豬士 iT邦高手 1 級 ‧ 2 年前 檢舉
kushu提到:
cad_id

cad_id 不也是你自己先打的嗎??

Unknown column 'cad_id' in 'field list'
這已經說的很清楚啦.
與其花時間埋怨,不如多試吧.
你貼圖會有資料被遮住,你也沒有去想怎樣把資料表結構,
內容,用文字貼上來.
這樣比較難幫你.
至於mis2000lab呢,他說的基礎SQL的書備查,這句話呢,
他也是好意.
你卻回應:如果大家都買書就會.還要老師幹嘛?
這就不太好了.就是抬槓了.
何不改成請買哪本好,有何建議.
別埋怨說別人對你怎樣,會跟你說的,都是對你還不錯的.
kushu iT邦新手 5 級 ‧ 2 年前 檢舉
欄位名稱打錯 是我手誤
也自己改了.但您卻一直在找文字漏洞攻擊我
GOOGLE查到的範例.裡面怎麼可能有我自己表的欄位名稱.真是欲加之罪何患無辭
kushu iT邦新手 5 級 ‧ 2 年前 檢舉
hitomitanaka 謝謝
您說話比較公道.不像某人那樣
欄位打錯我已經解釋過了 一個字按錯 我看到也自己修正了
下次會注意浮水印的問題
下次發言我會注意略過那些人的
因為我是佛教徒.不可能做到左臉被打還說謝謝
danking iT邦研究生 3 級 ‧ 2 年前 檢舉
人有失手,馬有亂蹄...
至少..最後還是自己檢查出錯誤..
不管怎麼樣..這也是一種經驗!
kushu iT邦新手 5 級 ‧ 2 年前 檢舉
danking 再次謝謝您
mis2000lab iT邦好手 1 級 ‧ 2 年前 檢舉
不管是老鳥、菜鳥
都該在手邊放幾本書備查(像是字典一樣,不會就翻一下)

這是一個好習慣,跟「資歷」無關

另外,「把面子放在解答前面(愛面子比學習更重要)」、「惱羞成怒」
都是初學者最大的忌諱

這兩天遇見了幾個「特別敏感」的初學者,所以有些建議:
http://ithelp.ithome.com.tw/question/10156270?tag=hp.all

(這種人在IT業,很難存活下去。因為天天都有不會的東西要問人了!)
(這麼易爆,這麼敏感,其實走這條路,真的對您很辛苦)
mis2000lab iT邦好手 1 級 ‧ 2 年前 檢舉
佛教徒,不是四大皆空?
不是「無我相、人相、眾生相、壽者相」

怎麼會把大家的好意、建議,當成羞辱?

從來沒人打你,但你眼裡「對大家(回答者)充滿敵意」
mis2000lab iT邦好手 1 級 ‧ 2 年前 檢舉
其實這個問題,我也被人問過,但我一直不會回答。

有位學生上課前問我「上課範例能否使用三個以上的資料表來串連」
我問他「你會串兩個資料表嗎?Join?」

他說會。

我突然詞窮了,會串兩個,跟會串三個、四個、五個、一千兩百個,有什麼差別呢?
所以,我請他先熟練「兩個資料表的串連」,先熟悉再來玩三個吧?

然後,我問他:這兩個資料表,你是怎麼串的??
他說:就好像人有身份證字號(ID),獨一無二,就能串起來了

我把自己當成學生,不斷的問他怎麼做?原理?
最後他笑了,原來他是自己「困住」自己。其實技術他都會了

他會Join,他也懂,只是被資料表的「數量」給嚇到了,就不敢動手做

先問人再說

這是一個很有趣的經驗
也是「教學相長」的例子,有時候請「發問的人」當老師,請他把問題講清楚

他把問題釐清了,他自己便有答案喔 ^_^ 希望這個經驗對大家有幫助
mis2000lab iT邦好手 1 級 ‧ 2 年前 檢舉
http://ithelp.ithome.com.tw/ironman7/app/#/article/life/recent/10156230
我寫的鐵人賽文章(強調「自己動手做」的重要性!!)
只看書、只聽課是沒用的。

底下有一位網友 albertachen的留言,很有哲理與啟發,引述如下:

所以最好的方法是
不限學經歷但是要[有耐心肯實作]的比較容易成功
.....(省略).....
-- 教不會一定是老師沒用學生認知的方式講解
-- 只有笨老師, 沒有笨學生
-- 容易生氣的人就是找不到方法的人


《金剛經》云:一切有為法,如夢幻泡影, 如露亦如電,應作如是觀。

上課(只聽不動手)、看別人的程式(不自己寫)
終究是夢幻泡影、虛無假象

只有「自己做」才是真的。
我這篇文章就是講這件事

自從發現這個訣竅以後,

我後來自修、學習新技術就「快」很多了
不光是學習速度快,心態也「快樂」了不少
[學習之道] 修福不修慧,大象披瓔珞; 修慧不修福,羅漢托空缽 (學習寫程式,只靠補習上課嗎?)
http://www.dotblogs.com.tw/mis2000lab/archive/2014/09/17/learning-and_do-it_20140917.aspx
mis2000lab iT邦好手 1 級 ‧ 2 年前 檢舉
不管是不是佛教徒,大家參考一下。謝謝 :-)
mis2000lab iT邦好手 1 級 ‧ 2 年前 檢舉
的確,SQL指令裡面,最難的就是 ---

1. 先熟悉每一個資料表的「欄位」名稱
2. 然後,是每張資料表之間的「邏輯」與「關連」

(這兩點,最花時間喔)

懂了以後,就能學SQL指令了

也因為如此,書上喜歡用北風資料庫,就是避免初學者「重新」學習新的資料表邏輯
(這段很花時間,但對初學者來說,沒直接幫助)
mis2000lab iT邦好手 1 級 ‧ 2 年前 檢舉
Muki老師名言:
沒有最適合,只有不斷磨合
但如果連磨合也不願,就沒資格說不適合。



讀書筆記:(也是佛家的一段話)

蠅愛尋光紙上鑽 不能透過幾多難
忽然撞著來時路 始信平生被眼瞞

(很符合自己一路走來,從「跌跌撞撞到找出自己學習路徑」的心路歷程)
外獅佬 iT邦大師 1 級 ‧ 2 年前 檢舉
佛教徒...這跟信什麼宗教有什麼關係?
難道你信伊斯蘭教,就會跑來這裡屠殺嗎?

您會挑回答者,當然,大家以後也會挑發問者
彼此彼此
外獅佬 iT邦大師 1 級 ‧ 2 年前 檢舉
kushu提到:
Unknown column 'cad_id'

相信這個英文應該沒有很難懂....
資料庫跟你說:我不認識'cad_id'這個欄位....
怪誰呢?
kushu iT邦新手 5 級 ‧ 2 年前 檢舉
wiselou 您真是瞎爆了
我已經完全看不懂您在說什麼了
一下說GOOLE查到的範例會有我表裡的欄位名稱.所以是我搞不清楚自己欄位
二下一直咬著說cad_id.我是不知道您到底有把文章看清楚嗎?還是故意略過找碴
沒錯我是打錯一個字.但錯誤也是我自己更正的.怪誰?
三下更扯了
照您所言 回教徒到台灣就會大口大口吃豬肉了 不可能嘛!!!
kushu iT邦新手 5 級 ‧ 2 年前 檢舉
mis2000lab 您好
首先在我的認知裡.討論區是給大家像好友.同學.同好一樣互相討論.互相學習的地方
不是給您來當老師.當老大.指責別人的
您可以選擇不教我.但是您的態度才是我回您話的原因
我不知道台灣教育到底發生什麼問題
學生有問題請教.老師的態度竟然是不給學生解答.還一昧的自以為是講得頭頭是道的大歪理
很多問題對於不會的人會困在死胡同裡.這是學習者常會遇到的問題
這時候如果有個人提點一下.就會大放光明
您一開始就沒搞懂我的問題.只是一昧的指責我說不去買書.不去做.不去試
您知道我是在試了2天都是錯才上來請教的嗎?
不管什麼程式語法 都會有參數及其他用法
書上告訴我
SELECT car_id, ware_id, ware_name, car_in, car_out, year_name, a01
FROM carsave, carware, caryear
WHERE car_id = car_in
我的問題不是1張2張3張數量的問題
而是卡在要查詢時記錄的號碼要轉成中文.又有2個欄位重複了
而書上都沒提到可以
LEFT JOIN carware CIN on car_in = CIN.ware_id
難道我能自己生出新的語法?
老師從以前就是這樣高高在上.自以為是
完全沒想過學習者到底遇到什麼問題
真不知道您扯東扯西是真的被我回您的話激怒了.覺得失面子.
如是這樣我向您道歉
畢竟在論壇上大家地位都是對等的
我沒有比您高的地位指責您
更加慶幸小弟我沒在IT業混飯吃.沒在您的門下學習
不然真的有十條命都不夠用
老鷹(eagle) iT邦高手 1 級 ‧ 2 年前 檢舉
好了這棟樓不要繼續了!

冷靜阿!!尊重阿!!
蒼天阿!!大地阿!!
驚
老鷹阿!!
毆飛
外獅佬 iT邦大師 1 級 ‧ 2 年前 檢舉
kushu提到:
GOOLE查到的範例會有我表裡的欄位名稱

我真的不知道,我曾幾何時有說過這句話..看來更瞎的在這裡...
mis2000lab iT邦好手 1 級 ‧ 2 年前 檢舉
會的人(懂、有專業、有知識的人)
不會因為別人罵他、或是雞蛋裡挑骨頭,
就抹煞他「已有的知識」

不會的人
再怎麼顧及顏面、吵架、爭執、維護自尊心、打筆戰、扯東扯西.....
還是不會

努力、發火、花時間....也得花在對的地方


我想分享一個小故事,每一次我受到挫折,跟我一起創業的大姊(補習班老闆)
就會跟我說:
「有賺錢的人,別跟沒賺錢的人鬥,
你是在浪費自己賺錢的時間,對方有的就是"鬧"的時間」


這兩天我也遇見這種自尊心很強的初學者(兩位)

我們說的東西,他願意聽、願意試試看,他學到的,永遠是他自己的。
他不願意接受,也就罷了,我也不會損失什麼? :-)

這條路,走不下去的人,鮮少是「不夠聰明」、很少是因為「非本科系」
大多是「人格特質」的因素

畢竟,這一行天天都在學新的、都在跟Bug奮戰
「人格特質」不行,很快就掰掰了

您會跟一個很快就掰掰的菜鳥生氣嗎?
還是趕緊賺自己的錢、讀自己的書、PO自己的文章?
mis2000lab iT邦好手 1 級 ‧ 2 年前 檢舉
kushu提到:
書上都沒提到可以
LEFT JOIN carware CIN on car_in = CIN.ware_id


哪本書啊?基礎的SQL指令書,應該都有
我沒有恥笑你的意思,你太敏感了

這是很基本的用法,如果您可以在書中找到解答,就可以省下時間(不用等人家回答)
當初只是這樣的想法而已

因為文字沒有聲調,很難表達是真心、恥笑、故意酸人
所以我也沒法子知道對方是怎麼想的

就是這樣而已,很不好意思,讓您覺得受委屈
我沒有這個意思
外獅佬 iT邦大師 1 級 ‧ 2 年前 檢舉
老師...咱們就此打住吧..
最近社會新聞這種人很多...我可不想被砍死啊...汗
mis2000lab iT邦好手 1 級 ‧ 2 年前 檢舉
停損,也是一種智慧
(這對我、wiselou、原PO來說,都一樣)

如果因為我第一次請您先翻翻書這句話
讓您不舒服,我真的很抱歉。我沒這個意思。


但後續原PO的發言,真的超過了IT問題的討論

有幫助,大家都開心
沒幫助的話,就算了,下次我會小心
kushu iT邦新手 5 級 ‧ 2 年前 檢舉
mis2000lab 您好
或許我真的誤解了您的意思.先跟您說聲對不起
諸多得罪.請多見諒
小弟只是無聊做個網頁物料查詢.可能真的買錯書了
DREAWARE
PHP
已經都弄好了
我會再去看看MYSQL
或是您有好的推薦?
kushu iT邦新手 5 級 ‧ 2 年前 檢舉
外獅佬 iT邦大師 1 級 ‧ 2 年前 檢舉
十分對不起,這位老兄...
那句話是您自己講的...別推到我頭上嘿
有圖有證據,樓上您自己cut的圖就是證據
kushu iT邦新手 5 級 ‧ 2 年前 檢舉
不然請問您引用

[kushu提到:
查了GOOGLE 也是.或許有多表.但滿滿的E文沒有中文解釋.搞不好都還會把欄位名當成是指令]

所以,您根本連自己的資料表有哪些欄位都搞不清楚....

是什麼意思呢?
小弟不只菜英文
現在連中文都快看不懂了
一級屠豬士 iT邦高手 1 級 ‧ 2 年前 檢舉
還在糾結啊.
doggyyy iT邦新手 3 級 ‧ 2 年前 檢舉
哈哈
一級屠豬士 iT邦高手 1 級 ‧ 2 年前 檢舉
放輕鬆,聽歌吧.
一級屠豬士 iT邦高手 1 級 ‧ 2 年前 檢舉
ted99tw iT邦研究生 1 級 ‧ 2 年前 檢舉
可能會蓋得比老鷹飛得還高,到時老鷹在上面築巢,出入還可搭電梯 暈
老鷹(eagle) iT邦高手 1 級 ‧ 2 年前 檢舉
ted99tw提到:
出入還可搭電梯

是否有女僕帶領臉紅

1 個回答

8
danking
iT邦研究生 3 級 ‧ 2 年前
最佳解答

使用 JOIN 結合查詢

<pre class="c" name="code">Select cad_id, COUT.ware_name, CIN.ware_name, year_name, a01
FROM carsave
LEFT JOIN caryear on car_year = year_id
LEFT JOIN carware CIN on car_in = CIN.ware_id
LEFT JOIN carware COUT on car_out = COUT.ware_id
WHERE car_in = 2 or car_out = 2
看更多先前的回應...收起先前的回應...
mis2000lab iT邦好手 1 級 ‧ 2 年前 檢舉

給原PO:

是不是該買一本基礎的SQL指令書籍,放在手邊備查呢?

一尾 iT邦研究生 1 級 ‧ 2 年前 檢舉

mis2000lab提到:
SQL指令書籍,放在手邊備查

我想放個十本還是有人不會
就像我一樣

kushu iT邦新手 5 級 ‧ 2 年前 檢舉

Select cad_id, COUT.ware_name, CIN.ware_name, year_name, a01
FROM carsave
LEFT JOIN caryear on car_year = year_id
LEFT JOIN carware CI...(恕刪)

出現錯誤
#1054 - Unknown column 'cad_id' in 'field list'

我自己試著想了2天了 都不行 就一直出現錯誤 才上來求救的哭

kushu iT邦新手 5 級 ‧ 2 年前 檢舉

car_id
輸出正確了
感謝danking

kushu iT邦新手 5 級 ‧ 2 年前 檢舉

mis2000lab
如果大家都買書就會.還要老師幹嘛?
我買的書裡都只寫了很簡單的JOIN 根本沒有寫到怎樣去串三張表
對於會SQL的人或許會覺得這是基本該會的
請您體諒我是剛開始學的新手.我也試著去做了.但是最後無法解決.才上來請教
如果您覺得我很白癡這個也在問.請您無視飄過
應該會有其他的人肯教我這個新手的

我要發表回答

立即登入回答