IT貓撲網(wǎng):您身邊最放心的安全下載站! 最新更新|軟件分類|軟件專題|手機(jī)版|論壇轉(zhuǎn)貼|軟件發(fā)布

您當(dāng)前所在位置: 首頁(yè)數(shù)據(jù)庫(kù)MSSQL → 實(shí)例解析用SQL Server處理物料清單規(guī)則

實(shí)例解析用SQL Server處理物料清單規(guī)則

時(shí)間:2015-06-28 00:00:00 來(lái)源:IT貓撲網(wǎng) 作者:網(wǎng)管聯(lián)盟 我要評(píng)論(0)

你可以通過(guò)執(zhí)行兩個(gè)計(jì)數(shù)來(lái)解決這個(gè)問(wèn)題。第一個(gè)計(jì)數(shù)簡(jiǎn)單的計(jì)算每一個(gè)食譜需要的原料;第二個(gè)計(jì)數(shù)先將RecipeIngredients表與Ingredients表連接起來(lái),再計(jì)數(shù)。從食品室中取出任何所需要的原料后都要降低這個(gè)計(jì)數(shù),再通過(guò)比較這個(gè)計(jì)數(shù),你就能拒絕那些你不能得到所有原料的食譜,也可以接受符合條件的食譜。我在Listing A 中提供了一個(gè)例子。(Listing A中的數(shù)據(jù)庫(kù)比我們現(xiàn)在討論的復(fù)雜一點(diǎn)點(diǎn),它有一些查詢表和一些沒有提到的列。)

既然有兩個(gè)計(jì)數(shù)(需要的和可得到的),那么我們必須對(duì)它們進(jìn)行簡(jiǎn)單的比較。我一般采取原子對(duì)分子查詢,所以我將每一條聲明都保留在視圖中(IngredientsAvailable_By_Recipe_vue 和IngredientsRequired_By_Recipe_vue)。然后,我用RecipeID字段做連接條件創(chuàng)建了第三個(gè)視圖,增加了一個(gè)條件那就是可得到的(Available)必須等于需要的(Required)。為了使這個(gè)列表更吸引人,我把Recipes表也加到里面去了,所以我能獲得食譜的名字。你可以查看Listing B。你也可以去掉這個(gè)邏輯來(lái)查看食譜,你可以將WHERE語(yǔ)句的條件改成Required > Available,但這樣并不會(huì)簡(jiǎn)化操作。

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表中需要一個(gè)Quantity列,在Pantry表中也需要一個(gè)Quantity列。(這樣會(huì)使例子變得更復(fù)雜;例如,我買了鹽,它的單位磅還是千克,食譜要求的一勺是大勺還是小勺呢?)

如果你有Quantity這個(gè)列的話,一個(gè)新的挑戰(zhàn)出現(xiàn)了:如果你想請(qǐng)朋友們吃午餐的話,你的菜單中用到了鱷梨醬、墨西哥沙拉和啤酒?,F(xiàn)在的任務(wù)是比較需要的品種與食品室中現(xiàn)有的品種,然后再創(chuàng)建一個(gè)需要購(gòu)買的清單。我把這問(wèn)題留給感興趣的讀者去實(shí)現(xiàn)。

注意:你也可以先下載一個(gè).NET executable程序,然后再創(chuàng)建數(shù)據(jù)庫(kù),并在數(shù)據(jù)庫(kù)中創(chuàng)建你感興趣的對(duì)象,包括表中的數(shù)據(jù)。你需要安裝了.NET和SQL Server 2005才能執(zhí)行這些代碼。這個(gè)程序是一個(gè)winRAR文件,但是里面是.NET executable。代碼可以通過(guò)Red Gate Software的SQL Packager來(lái)創(chuàng)建,但是你不需要Red Gate就可以運(yùn)行。(T006)

關(guān)鍵詞標(biāo)簽:SQL Server

相關(guān)閱讀

文章評(píng)論
發(fā)表評(píng)論

熱門文章 淺談JSP JDBC來(lái)連接SQL Server 2005的方法 淺談JSP JDBC來(lái)連接SQL Server 2005的方法 SqlServer2005對(duì)現(xiàn)有數(shù)據(jù)進(jìn)行分區(qū)具體步驟 SqlServer2005對(duì)現(xiàn)有數(shù)據(jù)進(jìn)行分區(qū)具體步驟 sql server系統(tǒng)表?yè)p壞的解決方法 sql server系統(tǒng)表?yè)p壞的解決方法 MS-SQL2005服務(wù)器登錄名、角色、數(shù)據(jù)庫(kù)用戶、角色、架構(gòu)的關(guān)系 MS-SQL2005服務(wù)器登錄名、角色、數(shù)據(jù)庫(kù)用戶、角色、架構(gòu)的關(guān)系

相關(guān)下載

    人氣排行 配置和注冊(cè)O(shè)DBC數(shù)據(jù)源-odbc數(shù)據(jù)源配置教程 如何遠(yuǎn)程備份(還原)SQL2000數(shù)據(jù)庫(kù) SQL2000數(shù)據(jù)庫(kù)遠(yuǎn)程導(dǎo)入(導(dǎo)出)數(shù)據(jù) SQL2000和SQL2005數(shù)據(jù)庫(kù)服務(wù)端口查看或修改 修改Sql Server唯一約束教程 SQL Server 2005降級(jí)到2000的正確操作步驟 sql server系統(tǒng)表?yè)p壞的解決方法 淺談JSP JDBC來(lái)連接SQL Server 2005的方法