|
星期天是家人聚會的日子, 老爸與哥哥一家及哥哥多年的朋友到家中來打麻將。哥哥的朋友在工作上遇到一個 SQL 查詢的瓶頸, 說要順便來問我。朋友一到, 就開始想解決方法。又是翻書又是直接連上 SQL Server 測試, 一時腦塞竟然完全沒有辦法想出方法。
最後, 老爸無聊的受不了, 趕緊先陪著打麻將再說。問題就被丟到九霄雲外去了。直到晚上 8 點多, 突然想到一早洗的衣服還沒有晾, 才跑到後陽台去晾衣服。突然閃過朋友的問題還沒有解決。沒有想到解答也隨著問題一起來了。真是踏破鐵鞋無覓處, 得來全不費功夫。
以下就簡單的舉一個例子。有二個資料表, "客戶" 與 "訂單"。
需求是要列出所有的客戶, 及最多三筆該客戶訂單。
最基本要列出所有的客戶及訂單, 只要一個 LEFT OUTER JOIN 就可以解決了:
select a.客戶編號, a.客戶姓名, a.統一編號, b.訂單編號, b.產品, ... from 客戶 as a left outer join 訂單 as b on a.客戶編號 = b.客戶編號
如果每個客戶只要列出最多三筆訂單, 只要加上一行就完成了:
select a.客戶編號, a.客戶姓名, a.統一編號, b.訂單編號, b.產品, ... from 客戶 as a left outer join 訂單 as b on a.客戶編號 = b.客戶編號 where b.客戶編號 in (select top 3 客戶編號 from 客戶 as c where c.客戶編號 = a.客戶編號)
也許還有人有更好的方法, 也歡迎提出來喲。
可能大家會覺得我能力也太差了吧, 連這點小問題都沒有辦法在第一時間找出解決方案...不過, 能力差歸能力差啦。就像電影「當幸福來敲門」裡的一段話。
"I'm the type of person... ...if you ask me a question, and I don't know the answer... ...I'm gonna tell you that I don't know. But I bet you what. I know how to find the answer, and I will find the answer. Is that fair enough?"
The Pursuit of Happyness 當幸福來敲門
結論就是, 有時候工作上遇到瓶頸, 到處走一走動一動換換心境有時候比留在原地鑽牛角尖來的好。像我在公司如果突然有什麼地方邏輯不通、流程不順、寫不出來, 我就會起身去上個廁所伸展一下。往往回到位子上麻煩就解決了。
|