解析用SQL Server處理物料清單規(guī)則_Mssql數(shù)據(jù)庫教程
推薦:解析SQL Server 2000視圖問題視圖的好處,它可以橫縱分割表,在視圖上的可以執(zhí)行與在表上一至的操作,如:Insert、Update、Delete。這些操作與在表上的相應(yīng)操作大至相同,不過也有些不同之處。在視圖上進行操作的列是只屬于視圖的列,這些列不一定包含對應(yīng)表中的所有列,所以在執(zhí)行Inser
你可以通過執(zhí)行兩個計數(shù)來解決這個問題。第一個計數(shù)簡單的計算每一個食譜需要的原料;第二個計數(shù)先將RecipeIngredients表與Ingredients表連接起來,再計數(shù)。從食品室中取出任何所需要的原料后都要降低這個計數(shù),再通過比較這個計數(shù),你就能拒絕那些你不能得到所有原料的食譜,也可以接受符合條件的食譜。我在Listing A 中提供了一個例子。(Listing A中的數(shù)據(jù)庫比我們現(xiàn)在討論的復(fù)雜一點點,它有一些查詢表和一些沒有提到的列。)
既然有兩個計數(shù)(需要的和可得到的),那么我們必須對它們進行簡單的比較。我一般采取原子對分子查詢,所以我將每一條聲明都保留在視圖中(IngredientsAvailable_By_Recipe_vue 和IngredientsRequired_By_Recipe_vue)。然后,我用RecipeID字段做連接條件創(chuàng)建了第三個視圖,增加了一個條件那就是可得到的(Available)必須等于需要的(Required)。為了使這個列表更吸引人,我把Recipes表也加到里面去了,所以我能獲得食譜的名字。你可以查看Listing B。你也可以去掉這個邏輯來查看食譜,你可以將WHERE語句的條件改成Required > Available,但這樣并不會簡化操作。
ListingA:
/* count the ingredients required */SELECT
[Recipe Ingredients].RecipeID,
Count([Recipe Ingredients].IngredientID) AS RequiredFROM
[Recipe Ingredients]GROUP BY
[Recipe Ingredients].RecipeID;
/* count the ingredients available */SELECT
[Recipe Ingredients].RecipeID,
Count(Pantry.IngredientID) AS AvailableFROM Pantry
RIGHT JOIN [Recipe Ingredients]
ON Pantry.IngredientID
= [Recipe Ingredients].IngredientIDGROUP BY
[Recipe Ingredients].RecipeID;
ListingB:
SELECT
IngredientsRequired_by_Recipe_qs.RecipeID,
Recipes.RecipeNameFROM
(IngredientsAvailable_By_Recipe_qs
INNER JOIN IngredientsRequired_by_Recipe_qs
ON IngredientsAvailable_By_Recipe_qs.RecipeID = IngredientsRequired_by_Recipe_qs.RecipeID)
INNER JOIN Recipes
ON IngredientsRequired_by_Recipe_qs.RecipeID
= Recipes.RecipeIDWHERE (([Available]>=[Required]));
按照早期的規(guī)定,我假定在食品室中出現(xiàn)的任意數(shù)量都表示這種原料是充足的。在RecipeIngredients表中需要一個Quantity列,在Pantry表中也需要一個Quantity列。(這樣會使例子變得更復(fù)雜;例如,我買了鹽,它的單位磅還是千克,食譜要求的一勺是大勺還是小勺呢?)
如果你有Quantity這個列的話,一個新的挑戰(zhàn)出現(xiàn)了:如果你想請朋友們吃午餐的話,你的菜單中用到了鱷梨醬、墨西哥沙拉和啤酒。現(xiàn)在的任務(wù)是比較需要的品種與食品室中現(xiàn)有的品種,然后再創(chuàng)建一個需要購買的清單。我把這問題留給感興趣的讀者去實現(xiàn)。
注意:你也可以先下載一個.NET executable程序,然后再創(chuàng)建數(shù)據(jù)庫,并在數(shù)據(jù)庫中創(chuàng)建你感興趣的對象,包括表中的數(shù)據(jù)。你需要安裝了.NET和SQL Server 2005才能執(zhí)行這些代碼。這個程序是一個winRAR文件,但是里面是.NET executable。代碼可以通過Red Gate Software的SQL Packager來創(chuàng)建,但是你不需要Red Gate就可以運行。(T006)
分享:怎樣制定自己的SQL Server 2000觸發(fā)器本文從定義入手仔仔細細的來講解如何制定自己的觸發(fā)器。 創(chuàng)建一個簡單的觸發(fā)器 觸發(fā)器是一種特殊的存儲過程,類似于事件函數(shù),SQL Server? 允許為 INSERT、UPDATE、DELETE 創(chuàng)建觸發(fā)器,即當(dāng)在表中插入、更新、刪除記錄時,觸發(fā)一個或一系列 T-SQL語句。 觸發(fā)
- sql 語句練習(xí)與答案
- 深入C++ string.find()函數(shù)的用法總結(jié)
- SQL Server中刪除重復(fù)數(shù)據(jù)的幾個方法
- sql刪除重復(fù)數(shù)據(jù)的詳細方法
- SQL SERVER 2000安裝教程圖文詳解
- 使用sql server management studio 2008 無法查看數(shù)據(jù)庫,提示 無法為該請求檢索數(shù)據(jù) 錯誤916解決方法
- SQLServer日志清空語句(sql2000,sql2005,sql2008)
- Sql Server 2008完全卸載方法(其他版本類似)
- sql server 2008 不允許保存更改,您所做的更改要求刪除并重新創(chuàng)建以下表
- SQL Server 2008 清空刪除日志文件(瞬間日志變幾M)
- Win7系統(tǒng)安裝MySQL5.5.21圖解教程
- 將DataTable作為存儲過程參數(shù)的用法實例詳解
Mssql數(shù)據(jù)庫教程Rss訂閱編程教程搜索
Mssql數(shù)據(jù)庫教程推薦
- 探討SQL Server中Case 的不同用法
- SSB(SQLservice Service Broker) 入門實例介紹
- 揭秘優(yōu)化SQL Server提高查詢速度的方法
- 淺析SQL Server 2008中不推薦及不支持的功能
- 詳解優(yōu)化SQL Server數(shù)據(jù)庫的方法
- SQL Server數(shù)據(jù)庫中處理空值時常見問題
- 怎樣利用SQL Server復(fù)制技術(shù)實現(xiàn)數(shù)據(jù)同步更新
- 怎樣用壓縮技術(shù)給SQL Server備份文件瘦身
- 解決SQL Server數(shù)據(jù)庫被掛馬的方法
- 解決Sql Server警報的疑難問題
- 相關(guān)鏈接:
- 教程說明:
Mssql數(shù)據(jù)庫教程-解析用SQL Server處理物料清單規(guī)則
。