国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > SQL Server > 正文

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

2024-08-31 00:46:17
字體:
供稿:網(wǎng)友

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

既然有兩個計(jì)數(shù)(需要的和可得到的),那么我們必須對它們進(jìn)行簡單的比較。我一般采取原子對分子查詢,所以我將每一條聲明都保留在視圖中(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)建一個需要購買的清單。我把這問題留給感興趣的讀者去實(shí)現(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就可以運(yùn)行。(T006)

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 明水县| 林甸县| 衡南县| 来宾市| 宜春市| 白山市| 张掖市| 青阳县| 德阳市| 东阿县| 扎鲁特旗| 珠海市| 上犹县| 太原市| 岫岩| 呼伦贝尔市| 聊城市| 延安市| 南木林县| 清远市| 玉门市| 颍上县| 克拉玛依市| 桂东县| 浦东新区| 瑞金市| 旅游| 法库县| 托克逊县| 博湖县| 卢湾区| 搜索| 丰城市| 金湖县| 江阴市| 河北省| 韶关市| 屏山县| 江山市| 灵石县| 东阳市|