大大毛 的筆記

            DDM's Note

          哪怕沒有辦法一定有說法,
          就算沒有鴿子一定有烏鴉,
          固執無罪 夢想有價,
          讓他們驚訝.

          posts - 14, comments - 23, trackbacks - 0, articles - 58
             :: 首頁 ::  :: 聯系 ::  :: 管理

          查詢投票的例子(向表中臨時插入特征列)

          Posted on 2006-08-15 18:23 大大毛 閱讀(211) 評論(0)  編輯  收藏 所屬分類: SQL

          ???問題(示例):
          ??????投票表vote,根據條件查詢 有效/失效/全部 的投票主題,是否有效的條件是將當前日期與投票的有效期進行比較
          vote表結構
          ??????示例數據:
          insert?into?vote?values?(?'topic01',dateadd(day,-2,getdate()),dateadd(day,2,getdate())?)
          insert?into?vote?values?(?'topic02',dateadd(day,-20,getdate()),dateadd(day,-10,getdate())?)
          ??????實現效果
          ?????????有效投票為 topic01?,無效投票為 topic02

          ???解決方法:
          自連接查詢1
          ???在使用自連接查詢時,使用判斷條件生成一個臨時的子表進行自連接。利用左/右連接時子表對應列為 null 的轉換從而達到在 vote 表中插入一個特征列的目的,忽略掉最后的 where 子句,手工在 select vote.* 處加入? ,isValid即可以看到效果。

          ???可以將SQL語句改寫成下面這樣,可以看得清楚一些。
          自連接查詢2

          ???也可以根據需要,改寫成子查詢語句:
          子查詢

          ???使用 exec vote_getAllVote 參數,即可演示效果(sqlServer2000)
          ???當然,生成兩個臨時表 validVote,invalidVote再聯合查詢?或者 用IF 加開關分開select也是可以的,這里就不贅述了。

          ???后記
          ??????SQL語法上并沒有規定解決問題只能使用一種方案,它采用了非常靈活的工作方式,因此具體使用哪一種解決方案取決于具體的應用及個人喜好。

          i am ddm

          主站蜘蛛池模板: 沙河市| 濉溪县| 永丰县| 三江| 扶风县| 邛崃市| 扶余县| 罗江县| 禄劝| 抚远县| 萍乡市| 兴义市| 正宁县| 广南县| 凤冈县| 巴中市| 临泽县| 丹寨县| 玉林市| 宜川县| 香格里拉县| 阿城市| 沁水县| 巴彦淖尔市| 鸡东县| 丁青县| 绍兴县| 两当县| 烟台市| 泽库县| 辉南县| 吉木乃县| 龙陵县| 凉城县| 景德镇市| 定日县| 德令哈市| 娄烦县| 黄冈市| 乐山市| 临猗县|