总和项目&;具有多个表的数量&;如果MySQL
我想显示所有带有数量的项目。但数量在不同的表中 示例输出:总和项目&;具有多个表的数量&;如果MySQL,mysql,Mysql,我想显示所有带有数量的项目。但数量在不同的表中 示例输出: Item Quantity Item1 34 Item2 10 Item3 0 ........ 我有一个代码,可以计数数量,但只能在单个项目中。 SELECT SUM(ROUND(Quantity)) FROM( SELECT COALESCE(SUM(od.Quantity),0) as 'Quantity' FROM sts as T1 LEFT JOIN orderset_details as od ON T
Item Quantity
Item1 34
Item2 10
Item3 0
........
我有一个代码,可以计数数量,但只能在单个项目中。
SELECT SUM(ROUND(Quantity)) FROM(
SELECT
COALESCE(SUM(od.Quantity),0) as 'Quantity'
FROM sts as T1
LEFT JOIN orderset_details as od ON T1.OrdersetId = od.OrdersetId
WHERE od.ItemId = '4786'
UNION ALL
SELECT
COALESCE(SUM(od.Quantity),0) as 'Quantity'
FROM drs as T2
LEFT JOIN orderset_details as od ON T2.OrdersetId = od.OrdersetId
WHERE od.ItemId = '4786'
UNION ALL
SELECT
COALESCE(SUM(IF(r.AddsToStock = '1', od.Quantity, 0 - od.Quantity)),0) as 'Quantity'
FROM stockadjustment as T3
LEFT JOIN reason as r ON r.ReasonId = T3.ReasonId
LEFT JOIN orderset_details as od ON T3.OrdersetId = od.OrdersetId
WHERE od.ItemId = '4786'
UNION ALL
SELECT
COALESCE(SUM(IF(T4.OrdersetId = od.OrdersetId, 0 - od.Quantity, -1 * od.Quantity)),0) as 'Quantity'
FROM issueslip as T4
LEFT JOIN orderset_details as od ON T4.OrdersetId = od.OrdersetId
WHERE od.ItemId = '4786'
UNION ALL
SELECT
COALESCE(SUM(IF(T4.OrdersetId = od.OrdersetId, 0 - od.Quantity, -1 * od.Quantity)),0) as 'Quantity'
FROM invoice as T4
LEFT JOIN orderset_details as od ON T4.OrdersetId = od.OrdersetId
WHERE od.ItemId = '4786') as t
如何使用此代码实现项目?
表名项
且id为ItemId
DELIMITER //
CREATE FUNCTION getItemQty(
_itemID INT(10)
)
RETURNS INT
BEGIN
RETURN (SELECT
SUM(ROUND(Quantity))
FROM (
SELECT
COALESCE(SUM(od.Quantity),0) as Quantity
FROM sts as T1
LEFT JOIN orderset_details as od
ON T1.OrdersetId = od.OrdersetId
WHERE od.ItemId = _itemID
UNION ALL
SELECT
COALESCE(SUM(od.Quantity),0) as Quantity
FROM drs as T2
LEFT JOIN orderset_details as od
ON T2.OrdersetId = od.OrdersetId
WHERE od.ItemId = _itemID
UNION ALL
SELECT
COALESCE(
SUM(
IF(r.AddsToStock = '1', od.Quantity, 0 - od.Quantity)
),0
) as Quantity
FROM stockadjustment as T3
LEFT JOIN reason as r
ON r.ReasonId = T3.ReasonId
LEFT JOIN orderset_details as od
ON T3.OrdersetId = od.OrdersetId
WHERE od.ItemId = _itemID
UNION ALL
SELECT
COALESCE(
SUM(
IF(T4.OrdersetId = od.OrdersetId, 0 - od.Quantity, -1 * od.Quantity)
),0
) as Quantity
FROM issueslip as T4
LEFT JOIN orderset_details as od
ON T4.OrdersetId = od.OrdersetId
WHERE od.ItemId = _itemID
UNION ALL
SELECT
COALESCE(
SUM(
IF(T4.OrdersetId = od.OrdersetId, 0 - od.Quantity, -1 * od.Quantity)
),0
) as Quantity
FROM invoice as T4
LEFT JOIN orderset_details as od
ON T4.OrdersetId = od.OrdersetId
WHERE od.ItemId = _itemID
) as t);
END//
SELECT
ItemId,
getItemQty(ItemId) AS quantity
FROM items
我稍后会试试,因为我需要一些睡眠,但我想这就是我想要的:)我稍后会测试。感谢您回答(y)
#1054-where子句中的未知列“i.ItemId”
我明白了,这是因为我们有两级子查询,无法访问外部查询的数据。尝试第二个查询。如果它不起作用,我仍然可以尝试一些东西。我不知道如何使用该查询实现items
表。我不知道。我真的需要你的帮助。你是说项表还不存在吗?抱歉,让我概括一下,您的项分布在查询中使用的所有表中,您希望将数据重新组合到一个表中。这是你想要的吗?<代码>左联接X,其中X <代码>与<代码>内部连接X <代码>相同。如果你愿意,考虑下面的简单的两步过程:1。如果您还没有这样做,请提供适当的CREATE和INSERT语句(和/或SQLFIDLE),以便我们可以更轻松地复制问题。2.如果您还没有这样做,请提供一个与步骤1中提供的信息相对应的所需结果集。@很抱歉,我是MySQL新手,尽管我使用MySQL已经多年了。这是我第一次遇到太多的加入。