2014年2月28日 星期五

[Error] 紀錄


序列未包含項目

Q
對 'MvcShopping.Controllers.CartController' 的方法 'System.Web.Mvc.ActionResult UpdateAmount(Int32, Int32)' 中不可為 null 型別 'System.Int32' 的參數 'ProductID' 而言,參數字典含有 null 項目。選擇性參數必須是參考型別、可為 null 的型別,或必須宣告為選擇性參數。
參數名稱: parameters

A: 參數設定錯誤xxx( List<xxx>xxx) 才對

Q
一個或多個實體的驗證失敗。如需詳細資料,請參閱 'EntityValidationErrors' 屬性。
db.SaveChanges();

A
http://www.dotblogs.com.tw/messboy000/archive/2014/02/28/144189.aspx

2014年2月21日 星期五

[SQL] 字串練習

字串練習 :

使用到的函數

  1. SUBSTRING(變數, 起始(1), 長度)
  2. LEFT(變數, 從左取幾個長度)
  3. ESCAPE CHAR
  4. REGULAR EXPRESS
  5. LEN(計算長度)
  6. REPLACE(變數, 舊字串, 新字串)



  1. --字串練習
  2. SELECT '***' + SUBSTRING(VAL, 1, 4) "1取四"
  3.         ,'***' + SUBSTRING(VAL, 5, 8000) "5之後"
  4.         ,LEFT(VAL, 3) "左取3"
  5.         ,CHARINDEX('N', A.VAL) AS "查詢N位置"
  6. FROM
  7.         (
  8.                 SELECT 'abandon' AS VAL
  9.         ) A
  10.  
       
  11. --考慮ESCAPE CHAR    
  12. SELECT *
  13. FROM
  14.         (
  15.         SELECT '5% DISCOUNT' AS VAL
  16.         )A
  17. WHERE VAL LIKE '5[%]%'
  18. --正規表達式 REGULAR EXPRESS
  19. SELECT VAL
  20. FROM
  21.         (
  22.                 SELECT '123' VAL
  23.                 UNION ALL
  24.                 SELECT '456'
  25.                 UNION ALL
  26.                 SELECT 'ABC'
  27.                 UNION ALL
  28.                 SELECT 'xyz'
  29.                 UNION ALL
  30.                 SELECT '@789'
  31.                 UNION ALL
  32.                 SELECT '789@'
  33.         ) A
  34. WHERE 1=1
  35. --AND VAL LIKE '[0-9]%'         --測試1.數字開頭
  36. --AND VAL LIKE '[^0-9]%'    --測試2.非數字開頭
  37. AND VAL LIKE '[A-Z]%'           --測試3.英文開頭
  38. --左邊補0 或著 靠左對齊
  39. SELECT VAL "對照組"
  40.            ,RIGHT( REPLICATE('0',5) + CONVERT(VARCHAR, A.VAL),5) "前面補0"
  41.            ,LEFT(VAL + SPACE(5), 5) "向左對齊"
  42. FROM
  43.         (
  44.                 SELECT '1' VAL
  45.                 UNION ALL
  46.                 SELECT '12'
  47.                 UNION ALL
  48.                 SELECT '123'
  49.         )A
  50.        
  51.        
  52. --計算某字串出現的次數
  53. SELECT (LEN(VAL) - LEN(REPLACE(VAL, 'OX', ''))) / LEN('OX') "OX出現次數"
  54. FROM
  55.         (
  56.                 SELECT 'OXXOXOOOXXX' AS "VAL"
  57.         )A

2014年2月17日 星期一

[邏輯] 五間房子誰養魚提示

Q
    1 有五棟五種顏色的房子
    2 每一位房子的主人國籍都不同
    3 這五個人每人只喝一種飲料,只抽一種牌子的香煙,只養一種寵物
    4 沒有人有相同的寵物,抽相同牌子的香煙,喝相同的飲料
    提示:

    1  英國人住在紅房子裏
    2  瑞典人養了一條狗
    3  丹麥人喝茶
    4  綠房子在白房子左邊
    5  綠房子主人喝咖啡
    6  抽PALL MALL煙的人養了一只鳥
    7  黃房子主人抽DUNHILL煙
    8  住在中間那間房子的人喝牛奶
    9  挪威人住第一間房子
    10 抽混合煙的人住在養貓人的旁邊
    11 養馬人住在抽DUNHILL煙的人旁邊
    12 抽BLUE MASTER煙的人喝啤酒
    13 德國人抽PRINCE煙
    14 挪威人住在藍房子旁邊
    15 抽混合煙的人的鄰居喝礦泉水
    問題是:誰養魚???

A

使用拼圖法
參考此網站


2014年2月16日 星期日

[C#] 印出SATR * 練習

例子:

*
**
***
**
*

  1. private static void showstar(int p)
  2.         {
  3.             int num = p * 2;
  4.             for (int i = 1; i < num; i++)
  5.             {
  6.                 Console.WriteLine(new string('*', i < p ? i : num - i));
  7.             }
  8.         }

2014年2月14日 星期五

[邏輯] 9.賺多少錢

Q
一個人花8塊錢買了一只雞,9塊錢賣掉了,然後他覺得不劃算,花10塊錢又買回來了,11塊賣給另外一個人。問他賺了多少?

A
2元

2014年2月9日 星期日

[SQL] 備份紀錄.bak 出狀況紀錄

如果遇到備份問題,可先執行,再重新執行備份

  1. restore DATABASE SQLTips  -- 指定 欲還原的資料庫名稱db  
  2. FROM disk='C:\SQLTips.bak'  -- 設定 資料庫備份檔 .bak 路徑
  3. WITH
  4. move 'SQLTips' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Data\SQLTips.mdf',      -- 設定成 MSSQL資料庫存放路徑 (mdf)
  5. move 'SQLTips_Log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Data\SQLTips_log.ldf'  -- 設定Log 存放路徑
  6. ,NoRecovery
  7. ,REPLACE
  8. GO

[邏輯] 8.點線問題

Q
在9個點上畫10條直線,要求每條直線上至少有三點?



A

參考

[邏輯] 7. 開燈遊戲

Q
屋裏三盞燈,屋外三個開關,一個開關僅控制一盞燈,屋外看不到屋裏
怎樣只進屋一次,就知道哪個開關控制哪盞燈?
如果是四盞燈與四個開關呢?

A
    溫度,先開一盞,足夠長時間後關了,開另一盞,進屋看,亮的為後來開的,摸起來熱的為先開的,剩下的一盞也就確定了。
    四盞的情況:設四個開關為ABCD,先開AB,足夠長時間後關B開C,然後進屋,又熱又亮為A,只熱不亮為B,只亮不熱為C,不亮不熱為D。

[邏輯] 6. 2+7-2+7 火柴題

Q
2+7-2+7全部有火柴根組成,移動其中任何一根,
答案要求為30
   
說明:因為書寫問題作如下解釋,2是由橫折橫三根組成,7是由橫折兩根組成

A
    1, 改變賦值號.比如 ,-,=
    2, 注意質數.
    3, 可能把畫面顛倒過來.
    4, 然後就可以去考慮更改其他數字更改了
    247-217=30

[邏輯] 5.100顆乒乓球

Q
假設排列著100個乒乓球,由兩個人輪流拿球裝入口
袋,能拿到第100個乒乓球的人為勝利者。條件是:每次拿球者
至少要拿1個,但最多不能超過5個,問:如果你是最先拿球的
人,你該拿幾個?以後怎麼拿就能保證你能得到第100個乒乓球?

A
    拿出4個, 然後按照6的倍數和另外一人分別拿球. 即
    另外一人拿1個, 我拿5個
    另外一人拿2個, 我拿4個
    另外一人拿3個, 我拿3個
    另外一人拿4個, 我拿2個
    另外一人拿5個, 我拿1個.
    最終100個在我手上.
    
    首先拿4個 別人拿n個你就拿6-n個

[邏輯] 4.空瓶換可樂

Q
1元錢一瓶汽水,喝完後兩個空瓶換一瓶汽水,
問:你有20元錢,最多可以喝到幾瓶汽水?

A
40瓶,20 10 5 2 1 1=39, 這時還有一個空瓶子,先向店
主借一個空瓶,換來一瓶汽水喝完後把空瓶還給店主。


[邏輯] 3.猜牌問題

Q
S先生、P先生、Q先生他們知道桌子的抽屜裏有16張撲克牌:

紅桃  A、Q、4
黑桃  J、8、4、2、7、3
草花  K、Q、5、4、6
方塊  A、5

約翰教授從這16張牌中挑出一張牌來,並把這張牌的點數告訴 P先生,把這張牌的花色告訴Q先生。這時,約翰教授問P先生和Q 先生:你們能從已知的點數或花色中推知這張牌是什麼牌嗎? ,S先生聽到如下的對話:

P先生:我不知道這張牌。
Q先生:我知道你不知道這張牌。
P先生:現在我知道這張牌了。
Q先生:我也知道了。
    聽罷以上的對話,S先生想了一想之後,就正確地推出這張牌是什麼牌。
    請問:這張牌是什麼牌?

A
1的敘述表示不是唯一的數字 
2的敘述表示花色裡一定都是重複數字的牌 ->紅桃 方塊
3.的敘述表示他在這花色裡是唯一出現的 -> 方塊5 紅Q 紅4
4.表示Q先生是方塊才會知道答案

答案就是方塊5



類似
小明和小強都是張老師的學生,張老師的生日是M月N日,
    2人都知道張老師的生日是下列10組中的一天,
    張老師把M值告訴了小明,把N值告訴了小強,
    張老師問他們知道他的生日是那一天嗎?
    3月4日 3月5日 3月8日
    6月4日 6月7日
    9月1日 9月5日
    12月1日 12月2日 12月8日
    小明說:如果我不知道的話,小強肯定也不知道
    小強說:本來我也不知道,但是現在我知道了
    小明說:哦,那我也知道了

    請根據以上對話推斷出張老師的生日是哪一天

[邏輯] 2.交錯的水杯

Q
10只做化驗用的玻璃杯,前面5只盛滿了水,後面5只是空的。只移動2只玻璃杯,就便盛滿水的杯子和空杯子間隔起來?

A
1.把第二個滿著的杯子裏的水倒到第七個空著的杯子裏
2.把第四個滿著的杯子裏的水倒到第九個空著的杯子裏

[邏輯] 毒瓶子問題

10個藥瓶,9個正常,1個毒藥

正常藥瓶 : 11公克
毒藥瓶 : 13 公克

用電子天平 (可秤重) 量一次 就可得出哪瓶是毒藥 ?


提示 : 1 2 3 4 5 6 7 8 9 10 = 55

[邏輯] 1. 取水問題

Q
假設有一個池塘,裏面有無窮多的水。現有2個空水壺,容積分別為5升和6升。問題是如何只用這2個水壺從池塘裏取得3升的水。

A
    1、先把5升的灌滿,倒在6升裏,這時6升的壺裏有5升水
    2.再把5升的灌滿,用5升的壺把6升的灌滿,這時5升的壺裏剩4升水
    3.把6升的水倒掉,再把5升壺裏剩余的水倒入6升的壺裏,這時6升的壺裏有4升水
    4.把5升壺灌滿,倒入6升的壺,5-2=3

[邏輯] 9顆球 秤重

來源

Question:
有九顆看起來一模一樣的球
但是有一顆不一樣重,不知道它是比較輕還比較重
用天秤最少要量幾次可以"確保"找出這顆球?





Answer:
3次。

將9顆球分成A,B,C共3堆,每堆3顆球
A.ooo    B.ooo   C.ooo

                                                                 
[第1次]
拿A,B堆共6顆球分別放在天秤兩端
(i)假設不一樣重,就能知道想找的球在A,B其中之一
(ii)假設一樣重,就知道不一樣重的球是剩下沒秤的3顆其中之一


[第2次]
換掉輕的3顆(假設B較A輕),拿另外C堆的3顆上來量
假設天秤平衡了,就能知道不一樣重的球較輕
是剛剛被換掉的B堆3顆其中之一                                              

                                                                                 
[第3次]  
拿B堆3顆的其中2顆來量
如果平衡了,那麼要找的就是剩下的第3顆較輕的球

2014年2月8日 星期六

[邏輯] 智力測驗 - 秤重問題8~12

來源 : http://emn178.pixnet.net/blog/post/95966964

題目

有8顆球,其中7個重量一樣,只有1個較輕,用一個天平,試以最少測量次數來找出有問題的那一個球。

提示

最少為兩次可找出。


解答

將球編號並分堆如下:

A = [1, 2, 3]

B = [4, 5, 6]

C = [7, 8]

如果A=B,則C有問題。
如果7>8,則8有問題。
如果7<8,則7有問題。

如果A>B,則B有問題。
如果4=5,則6有問題。
如果4>5,則5有問題。
如果4<5,則4有問題。

如果A<B,則A有問題。
如果1=2,則3有問題。
如果1>2,則2有問題。
如果1<2,則1有問題。



[邏輯] 智力測驗

Q
12顆球中有一顆球不一樣重用一個沒有數字的天坪在三次內找出那顆球



解答參考網址

將球編號並分堆如下:

A = [1, 2, 3, 4]

B = [5, 6, 7, 8]

C = [9, 10, 11]

D = [12]

如果A=B,則C或12有問題。
如果[1, 2, 3]=C,則12有問題。
如果1>12,則12較輕。
如果1<12,則12較重。

如果[1, 2, 3]>C,則C有問題且較輕。
如果9=10,則11較輕。
如果9>10,則10較輕。
如果9<10,則9較輕。

如果[1, 2, 3]<C,則C有問題且較重。
如果9=10,則11較重。
如果9>10,則9較重。
如果9<10,則10較重。

如果A>B,則A或B有問題,且A較重或B較輕。
如果[1, 2, 5]=[3, 4, 6],則7或8有問題,且較輕。
如果7>8,則8較輕。
如果7<8,則7較輕。

如果[1, 2, 5]>[3, 4, 6],則1、2或6有問題,且1或2較重或6較輕。(可能是左邊重或右邊輕,找出左邊屬於A的球或右邊屬於B的球)
如果1=2,則6較輕。
如果1>2,則1較重。
如果1<2,則2較重。

如果[1, 2, 5]<[3, 4, 6],則3、4或5有問題,且3或4較重或5較輕。
如果3=4,則5較輕。
如果3>4,則3較重。
如果3<4,則4較重。

如果A<B,則有問題的球在A或B。
如果[1, 2, 5]=[3, 4, 6],則7或8有問題,且較重。
如果7>8,則7較重。
如果7<8,則8較重。

如果[1, 2, 5]>[3, 4, 6],則3、4或5有問題,且3或4較輕或5較重。
如果3=4,則5較重。
如果3>4,則4較輕。
如果3<4,則3較輕。

如果[1, 2, 5]<[3, 4, 6],則1、2或6有問題,且1或2較輕或6較重。
如果1=2,則6較重。
如果1>2,則2較輕。
如果1<2,則1較輕。

[其他] 網站備份 HTTrack



官網 :  http://www.httrack.com/

說明文件 來源 : 網路收集

網站有需要離線觀看使用。

很棒!!

[C#] 範例 : 洗牌 : 52張牌 (主控台)

練習了一下 簡單的52張牌 洗牌
想法 :
1. 先創造一個容器(裝52張牌)
2. 利用Random 亂數出數字(要少於52)
3. 利用迴圈尋覽每一張牌。
4. 將產生的亂數與當前的 i 值數字對調,來達到隨機換牌的效果

原來這也有參考 : http://openhome.cc/Gossip/AlgorithmGossip/ShuffleCard.htm




  1.  class Program
  2.     {
  3.         static void Main(string[] args)
  4.         {
  5.             Cards card = new Cards();
  6.             //洗牌
  7.             card.shuffle();
  8.             //顯示牌
  9.             card.showcard();
  10.         }
  11.     }
  12.     public class Cards
  13.     {
  14.         public List<int> pack { get; set; }
  15.         public Cards(){
  16.             pack = new List<int>(52);
  17.             for (int i = 1; i <= 52; i++)
  18.             {
  19.                 pack.Add(i);
  20.             }
  21.            
  22.         }
  23.  //顯示牌
  24.         public void showcard(){
  25.             int temp = 1;
  26.             foreach (var item in this.pack)
  27.                 {
  28.                 Console.Write(item.ToString() + " ");
  29.                 if (temp % 13 == 0)
  30.                 {
  31.                     Console.WriteLine();
  32.                 }
  33.                 temp++;
  34.                 }
  35.         }
  36.         //洗牌
  37.         public void shuffle()
  38.         {
  39.             Random rnd = new Random();
  40.             for (int i = 0; i < pack.Count; i++)
  41.             {
  42.                 int swap = rnd.Next(51) + 1;
  43.                 int temp = pack[i];
  44.                 pack[temp] = pack[swap];
  45.                 pack[swap] = temp;
  46.             }
  47.         }        
  48.     }

2014年2月7日 星期五

[SQL] 北風資料庫 練習


  1. USE northwind  
  2. GO
  3. -- 飲料庫存總量
  4. SELECT c.CategoryName, SUM(p.UnitsInStock) 庫存總量, avg(p.UnitsInStock) 平均數
  5. FROM Categories c
  6. INNER JOIN Products p ON p.CategoryID = c.CategoryID
  7. WHERE c.CategoryName = 'Beverages'
  8. GROUP BY c.CategoryName

  9. --各種類的庫存狀況
  10. SELECT c.CategoryName [種類], p.ProductName [物品名稱], p.UnitsInStock [庫存]
  11. FROM Products p
  12. INNER JOIN Categories c ON p.CategoryID = c.CategoryID
  13. WHERE c.CategoryName = 'Beverages'
  14. --農產品庫存 + 平均庫存 + 最大最小平均差
  15. SELECT c.CategoryName, SUM(p.UnitsInStock) AS 庫存, avg(p.UnitsInStock) AS 平均, MAX(p.UnitsInStock) 最大,MIN(p.UnitsInStock) 最小, STDEV(p.UnitsInStock)
  16. FROM Categories c
  17. INNER JOIN Products p ON c.categoryID = p.categoryID
  18. WHERE c.CategoryName = 'Produce'
  19. GROUP BY c.CategoryName
  20. -- 1996年 銷售總額
  21. SELECT c.CategoryName 類別, ROUND(SUM(od.Quantity * (1-od.Discount)* od.UnitPrice),2) 銷售總額
  22. FROM Categories c
  23. JOIN Products p ON p.CategoryID = c.CategoryID
  24. JOIN [ORDER Details] od ON od.ProductID = p.ProductID
  25. JOIN Orders o ON o.OrderID = od.OrderID
  26. WHERE c.CategoryName = 'Beverages' AND Datepart(YEAR,o.OrderDate)='1996'
  27. GROUP BY c.CategoryName
  28. -- 展示類別 (用group by)
  29. SELECT c.CategoryName
  30. FROM Products p
  31. JOIN Categories c ON c.CategoryID=p.CategoryID
  32. GROUP BY c.CategoryName
  33. -- 展示類別 (用distinct)
  34. SELECT DISTINCT c.CategoryName
  35. FROM Categories c
  36. --1996年 超過15比以上訂單 員工
  37. SELECT e.EmployeeID [編號], e.LastName [名稱], COUNT(o.CustomerID) [訂單數]
  38. FROM orders o
  39. JOIN Employees e ON e.EmployeeID = o.EmployeeID
  40. WHERE DATEPART(YEAR, o.OrderDate) = '1996'
  41. GROUP BY e.EmployeeID, e.LastName
  42. HAVING COUNT(o.CustomerID) > 14
  43. ORDER BY e.EmployeeID
  44. --1996年 超過15比以上訂單 員工
  45. SELECT e.EmployeeID [編號], e.LastName [名稱], COUNT(*) [訂單數]
  46. FROM orders o
  47. JOIN Employees e ON e.EmployeeID = o.EmployeeID
  48. WHERE o.OrderDate BETWEEN '1996-01-01' AND '1996-12-31'
  49. GROUP BY e.EmployeeID, e.LastName
  50. HAVING COUNT(*) > 14
  51. ORDER BY e.EmployeeID
  52. -- 各類別庫存
  53. SELECT c.CategoryName [類別], SUM(p.UnitsInStock) [庫存], MIN(p.UnitsInStock) [最小庫存], MAX(p.UnitsInStock) [最大庫存]
  54. FROM Products p
  55. INNER JOIN Categories c ON p.CategoryID= c.CategoryID
  56. GROUP BY c.CategoryName
  57. --加拿大 員工與客戶訂單的統計
  58. SELECT EmployeeID, CustomerID,  COUNT(OrderID) 訂單數量
  59. FROM [Orders Qry]
  60. WHERE country IN('Canada')
  61. GROUP BY EmployeeID, CustomerID
  62. WITH ROLLUP
  63. --加拿大 員工與客戶訂單的統計 家小計總計
  64. SELECT isnull(CONVERT(nvarchar,EmployeeID),N'總計') AS EmployeeID, ISNULL(CustomerID, N'小計') AS CustomerID, COUNT(OrderID) 訂單數量
  65. FROM [Orders Qry]
  66. WHERE country IN('Canada')
  67. GROUP BY EmployeeID, CustomerID
  68. WITH ROLLUP
  69. --加拿大 員工與客戶訂單的統計 家小計總計
  70. SELECT isnull(CONVERT(nvarchar,EmployeeID),N'總計') AS EmployeeID, ISNULL(CustomerID, N'小計') AS CustomerID, COUNT(OrderID) 訂單數量
  71. FROM [Orders]
  72. WHERE shipcountry IN('Canada')
  73. GROUP BY EmployeeID, CustomerID
  74. WITH ROLLUP
  75. -- 員工訂單 + 業績
  76. SELECT e.EmployeeID, e.LastName, COUNT(o.OrderID) [訂單],ROUND(SUM( od.Quantity * ( 1 - od.Discount) *od.UnitPrice),0) 業績
  77. FROM Employees e
  78. JOIN Orders o ON o.EmployeeID=e.EmployeeID
  79. JOIN [ORDER Details] od ON od.OrderID = o.OrderID
  80. GROUP BY e.EmployeeID, e.LastName

2/8
  1. USE northwind
  2. GO
  3.  
  4.  
  5. --查詢客戶訂單及供應商的資料,只會顯示有有訂單的客戶
  6. SELECT DISTINCT c.CompanyName AS customers, p.ProductName , s.CompanyName 供應商
  7. FROM Customers c
  8. JOIN Orders o ON c.CustomerID=o.CustomerID
  9. JOIN [ORDER Details] od ON o.OrderID = od. OrderID
  10. JOIN Products p ON od.ProductID = p. ProductID
  11. JOIN Suppliers s ON p.SupplierID=s.SupplierID
  12. GROUP BY c.CompanyName, p.ProductName, s.CompanyName
  13.  
  14. --同上 (錯誤)但包含沒有客戶訂單的資料
  15. SELECT c.CompanyName, s.CompanyName
  16. FROM Customers c
  17. LEFT JOIN Orders o ON o.CustomerID = c.CustomerID
  18. JOIN [ORDER Details] od ON od.OrderID = o.OrderID
  19. JOIN Products p ON p.ProductID = od.ProductID
  20. JOIN Suppliers s ON s.SupplierID = p.SupplierID
  21. GROUP BY c.CompanyName,s.CompanyName
  22. ORDER BY s.CompanyName
  23.  
  24. --同上 但包含沒有客戶訂單的資料
  25. SELECT c.CompanyName, s.CompanyName
  26. FROM Customers c
  27. LEFT JOIN ( Orders o
  28. JOIN [ORDER Details] od ON od.OrderID = o.OrderID
  29. JOIN Products p ON p.ProductID = od.ProductID
  30. JOIN Suppliers s ON s.SupplierID = p.SupplierID )
  31.  ON o.CustomerID = c.CustomerID
  32. GROUP BY c.CompanyName,s.CompanyName
  33. ORDER BY s.CompanyName
  34.  
  35. --連結自身 找出住在相同城市的員工
  36. SELECT a.EmployeeID, a.FirstName, a.City, b.EmployeeID, b.FirstName, b.City
  37. FROM Employees a
  38. JOIN Employees b ON a.City = b.City
  39. WHERE a.EmployeeID > b.EmployeeID
  40.  
  41. --self join 員工與主管關係表 (示範用right 顯示右邊b 資料表基底的全部員工ID,請與下面參照)
  42. SELECT a.EmployeeID, a.FirstName, b.EmployeeID [主管ID], b.FirstName
  43. FROM Employees a
  44. RIGHT JOIN Employees b ON  b .EmployeeID = a.ReportsTo
  45.  
  46. --self join 員工與主管關係表 (正確)
  47. SELECT a.EmployeeID, a.FirstName, b.EmployeeID [主管ID], b.FirstName
  48. FROM Employees a
  49. LEFT JOIN Employees b ON  b .EmployeeID = a.ReportsTo
  50.  
  51. SELECT MAX(OrderDate) FROM Orders
  52. SELECT MIN(OrderDate) FROM Orders
  53.  
  54.  
  55. --最早的第一筆訂單產品 與最新的一筆訂單產品 (訂單編號 + 訂單日期 + 產品)
  56. SELECT
  57. o.OrderID 訂單編號,
  58. CONVERT(VARCHAR, o.OrderDate, 111) 訂單日期,
  59. p.ProductName 產品
  60. FROM Orders o
  61. JOIN [ORDER Details] od ON o.OrderID = od.OrderID
  62. JOIN Products p ON p.ProductID = od.ProductID
  63. WHERE o.OrderDate = (SELECT MAX(OrderDate) FROM Orders)
  64. OR  o.OrderDate = (SELECT MIN(OrderDate) FROM Orders)
  65. ORDER BY o.OrderDate