我正在开发一个物料清单成本计算器程序,我正在努力通过一些简单的解决方案来理解我想要的一些递归选择.
我正在使用SQL Server 2005来完成这部分应用程序.
假设我有产品A,其中包含装配B和C部分.装配B将包含部件D和E,但是,这里是我奋斗的地方,D和或E可能包含X个其他部件.
我可以做一些事情;
SELECT * FROM TBLBOM WHERE Parent = A
UNION
SELECT * FROM TBLBOM WHERE Parent = B
UNION
SELECT * FROM TBLBOM WHERE Parent = C
Run Code Online (Sandbox Code Playgroud)
产生某种东西;
PARENT COMP COST
A X £1
B D £0.5
B E £0.5
....
C Y £1
Run Code Online (Sandbox Code Playgroud)
但是,假设组件D由组件F&G组成,我将如何在t-sql语句中容纳它.
简而言之,我需要扩展与父产品关联的所有组件的完整组件列表,无论它们是在子组件中还是子组件的子组件中......
理想情况下,我想不惜一切代价避免光标:)
任何帮助/指导将不胜感激.
谢谢.
编辑; 根据要求,这是表结构和预期输出.父节点是DRAWINGNO,子节点是PART(它本身也可以是父节点);
BOMID DRAWINGNO ITEM PART COST
1303 HGR05180 1 HGR05370 1
1304 HGR05180 2 HGF65050 4
1305 HGR05180 3 HGF50340 1
1312 HGR05370 1 HPN05075 …Run Code Online (Sandbox Code Playgroud) 我正在努力获得更好的JavaScript工作知识.所以,我已经买了道格拉斯·克罗克福德的书"JavaScript的好部分".
我现在很难掌握Prototype.下面的所有内容似乎都在我的浏览器中工作,直到我点击// PROTOTYPE示例.有人可以看看它,看看为什么我不能从中得到任何输出.(除非我将所有原型代码注释掉,否则我的页面将返回空白)
谢谢你的帮助.
巴里
var stooge = {
"first-name": "Jerome",
"last-name": "Howard",
"nickname": "J",
"profession" : 'Actor'
};
// below is augmenting
var st = stooge;
st.nickname = "curly";
// st.nickname and nick are the same because both are ref's to the same object
var nick = st.nickname;
document.writeln(stooge['first-name']); //expect Jerome -- this is "suffix" retrieval
document.writeln(st.nickname); //expect "curly" -- this is "notation" retrieval
document.writeln(nick); //expect "curly"
document.writeln(stooge.profession);
//PROTOTYPE EXAMPLE;
if (typeof Object.create !== 'function')
{
object.create = function(o) …Run Code Online (Sandbox Code Playgroud) 我试图更好地理解C#5中的线程.我有以下代码,如果我按F5(a和b似乎达到10)或按CTRL F5(a和b到3,我给出不同的结果)根据我正在研究的书中的文字)...有人可以解释一下原因吗?另外,我不明白为什么每个线程在10处停止,因为它似乎没有任何限制.是否有人可以向我解释这个问题?
using System;
using System.Threading;
namespace _70483.Chapter1
{
public static class Program
{
public static ThreadLocal<int> _field =
new ThreadLocal<int>(() =>
{
return Thread.CurrentThread.ManagedThreadId;
});
public static void Main()
{
new Thread(() =>
{
for (int x = 0; x < _field.Value; x++)
{
Console.WriteLine("Thread A: {0}", x);
}
}).Start();
new Thread(() =>
{
for (int x = 0; x < _field.Value; x++)
{
Console.WriteLine("Thread B: {0}", x);
}
}).Start();
Console.ReadKey();
}
}
}
Run Code Online (Sandbox Code Playgroud)