Php 减去1个查询';s来自另一个查询的结果';s结果
问题1: 问题2: 我想将查询1的Php 减去1个查询';s来自另一个查询的结果';s结果,php,mysql,Php,Mysql,问题1: 问题2: 我想将查询1的sum(quantity)减去查询2的sum(quantity) 请告诉我子问题的答案 select q1_sum-q2_sum from( SELECT sum(quantity) as q1_sum FROM `tbl_stock` WHERE item_id = '4' AND div_id = '1' AND internal_reel_no = 'DP1000585' AND txn_type IN ('IN') G
sum(quantity)
减去查询2的sum(quantity)
请告诉我子问题的答案
select q1_sum-q2_sum
from( SELECT sum(quantity) as q1_sum
FROM `tbl_stock`
WHERE item_id = '4'
AND div_id = '1'
AND internal_reel_no = 'DP1000585'
AND txn_type IN ('IN')
GROUP BY div_id, item_id, txn_type
cross join
SELECT sum(quantity) as q2_sum
FROM `tbl_stock`
WHERE item_id = '4'
AND div_id = '1'
AND internal_reel_no = 'DP1000585'
AND txn_type IN ('IN')
GROUP BY div_id, item_id, txn_type
)
子查询
select q1_sum-q2_sum
from( SELECT sum(quantity) as q1_sum
FROM `tbl_stock`
WHERE item_id = '4'
AND div_id = '1'
AND internal_reel_no = 'DP1000585'
AND txn_type IN ('IN')
GROUP BY div_id, item_id, txn_type
cross join
SELECT sum(quantity) as q2_sum
FROM `tbl_stock`
WHERE item_id = '4'
AND div_id = '1'
AND internal_reel_no = 'DP1000585'
AND txn_type IN ('IN')
GROUP BY div_id, item_id, txn_type
)
我会尝试:
SELECT
sum(case when txn_type = 'IN' then quantity else 0 end)
- sum(case when txn_type = 'IS' then quantity else 0 end)
FROM `tbl_stock`
WHERE item_id = '4'
AND div_id = '1'
AND internal_reel_no = 'DP1000585'
AND txn_type IN ('IN','IS')
GROUP BY div_id, item_id
注意:这将在MSSQL中工作-您必须在MySQL中尝试它我将尝试:
SELECT
sum(case when txn_type = 'IN' then quantity else 0 end)
- sum(case when txn_type = 'IS' then quantity else 0 end)
FROM `tbl_stock`
WHERE item_id = '4'
AND div_id = '1'
AND internal_reel_no = 'DP1000585'
AND txn_type IN ('IN','IS')
GROUP BY div_id, item_id
注意:这将在MSSQL中起作用-您必须在MySQL中尝试它,这里有另一个选项,它更通用,不涉及任何原始查询逻辑:
SELECT sum(quantity) INTO @sum1
FROM `tbl_stock`
WHERE item_id = '4'
AND div_id = '1'
AND internal_reel_no = 'DP1000585'
AND txn_type IN ('IN')
GROUP BY div_id, item_id, txn_type;
SELECT sum(quantity) INTO @sum2
FROM `tbl_stock`
WHERE item_id = '4'
AND div_id = '1'
AND internal_reel_no = 'DP1000585'
AND txn_type IN ('IS')
GROUP BY div_id, item_id, txn_type;
SELECT @sum1- @sum2;
下面是另一个选项,它更一般,不涉及任何原始查询逻辑:
SELECT sum(quantity) INTO @sum1
FROM `tbl_stock`
WHERE item_id = '4'
AND div_id = '1'
AND internal_reel_no = 'DP1000585'
AND txn_type IN ('IN')
GROUP BY div_id, item_id, txn_type;
SELECT sum(quantity) INTO @sum2
FROM `tbl_stock`
WHERE item_id = '4'
AND div_id = '1'
AND internal_reel_no = 'DP1000585'
AND txn_type IN ('IS')
GROUP BY div_id, item_id, txn_type;
SELECT @sum1- @sum2;
它有(或可以用)2个子选项,但这是一个非常好的答案。它有(或可以用)2个子选项,但这是一个非常好的答案。
SELECT SUM( CASE WHEN txn_type = 'IN' THEN quantity
WHEN txn_type = 'IS' THEN -quantity
END
) AS result
FROM
( SELECT txn_type, SUM(quantity) AS quantity
FROM tbl_stock
WHERE item_id = '4'
AND div_id = '1'
AND internal_reel_no = 'DP1000585'
AND txn_type IN ('IN', 'IS')
GROUP BY div_id, item_id, txn_type
) AS grp