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
idProdMain和idProdChild与表格“产品”相关
其他考虑因素是,一个产品可以有一些碎片,一个产品可以是一个碎片
产品价格等于数量*所有产品价格之和
“产品”表包含所有产品(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