Sql 请帮助我处理此MS Access查询

Sql 请帮助我处理此MS Access查询,sql,ms-access,Sql,Ms Access,我有两张桌子:“产品”和“件” 产品 idProd product price id idProdMain idProdChild quant 件 idProd product price id idProdMain idProdChild quant idProdMain和idProdChild与表格“产品”相关 其他考虑因素是,一个产品可以有一些碎片,一个产品可以是一个碎片 产品价格等于数量*所有产品价格之和 “产品”表包含所有产品(p 例子: 表格产品(idProd-产品-价格)

我有两张桌子:“产品”和“件”

产品

idProd
product
price
id
idProdMain
idProdChild
quant

idProd
product
price
id
idProdMain
idProdChild
quant
idProdMainidProdChild与表格“产品”相关

其他考虑因素是,一个产品可以有一些碎片,一个产品可以是一个碎片

产品价格等于数量*所有产品价格之和

“产品”表包含所有产品(p

例子: 表格产品(idProd-产品-价格)

表块(id-idProdMain-idProdChild-Quant.)

我需要什么? 当产品子项(件)的价格发生变化时,我需要更新主产品的价格。 按照前面的例子,如果我把这个产品“内存”(也是一块)的价格改为60欧元,那么产品“计算机”的价格就必须改为320欧元

我如何使用查询来实现它

我已经尝试过获取主产品的价格,但没有运行。此查询不返回任何值:

SELECT Sum(products.price*pieces.quant) AS Expr1
FROM products LEFT JOIN pieces ON (products.idProd = pieces.idProdChild) AND (products.idProd = pieces.idProdChild) AND (products.idProd = pieces.idProdMain)
WHERE (((pieces.idProdMain)=5));

更多信息 表“产品””包含商店中要出售的所有产品。

表“件”“用于控制复合产品。要知道哪些是产品的子产品。例如复合产品:计算机。该产品由其他产品(主板、硬盘、内存、cpu等)组成。

您有一个重复连接:

(products.idProd = pieces.idProdChild) AND (products.idProd = pieces.idProdChild)
另一个连接很可能是OR:

LEFT JOIN pieces ON (products.idProd = pieces.idProdChild) OR (products.idProd = pieces.idProdMain)
从表结构可以看出。不确定“vinculated”的确切含义,我猜是“Related”。如果是这样,我不确定您如何将idProductMain和idProductChild与产品表关联。也许一些数据示例会有所帮助

编辑:

好的,看起来连接是反向的

LEFT JOIN pieces ON (products.idProdChild = pieces.idProd) OR (products.idProdMain = pieces.idProd)

我想这会让你在大部分的道路上达到目的。

我认为你所寻找的比你迄今为止所尝试的要简单得多

基本上,您需要做的就是找到作为给定产品组成部分的所有产品和数量(请参见下面的内部联接子句)(请参见WHERE子句)和总价*数量(请参见SELECT子句):

当您运行它时,它会要求您输入“x”的值,这是您需要计算其总价的产品的ID

我希望这有帮助。

是,“相关”。IdProductMain和idProductChild是产品。例如:主板是产品。此产品可以是产品(您可以在没有任何pc的情况下销售主板),也可以是组件(件)。
SELECT 
   SUM(products.price * pieces.quant) as totalPrice 
FROM 
   pieces INNER JOIN products ON (products.idProd = pieces.idProdChild)
WHERE 
   pieces.idProdMain = x