Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MYSQL从多行中合并两个表_Mysql_Vb.net - Fatal编程技术网

MYSQL从多行中合并两个表

MYSQL从多行中合并两个表,mysql,vb.net,Mysql,Vb.net,我有两张桌子,一张是所有产品的,另一张是购买新产品的 产品表 Item Qty 301 2 302 5 303 3 304 4 305 6 Item Qty Status Date 302 5 used 09-15-2015 303 5 reserve 09-20-2015 301 5 used 09-20-2015 302

我有两张桌子,一张是所有产品的,另一张是购买新产品的

产品表

Item    Qty
301       2
302       5
303       3
304       4
305       6
Item     Qty    Status    Date
302       5     used      09-15-2015
303       5     reserve   09-20-2015
301       5     used      09-20-2015
302       5     reserve   09-20-2015
304       5     used      10-15-2015
303       5     reserve   10-15-2015
采购表

Item    Qty
301       2
302       5
303       3
304       4
305       6
Item     Qty    Status    Date
302       5     used      09-15-2015
303       5     reserve   09-20-2015
301       5     used      09-20-2015
302       5     reserve   09-20-2015
304       5     used      10-15-2015
303       5     reserve   10-15-2015
我想显示产品表中的数量,并将
采购表
的数量连接到
产品表

这是我的初始sql查询

SELECT product_name, product_quantity, quantity 
FROM products 
    LEFT OUTER JOIN purchases ON products.ID = purchases.product_ID 
WHERE product_status !='deleted' AND status != 'used'`. 
但是,它只返回
采购表
中的项目,即reserve

我想要达到的是

Item    Qty    Reserved Qty    Total
301       2     0                 2
302       5     5                 10
303       3     10                13
304       4     0                 4
305       6     0                 6
更新 新的sql查询

SELECT product_name, product_quantity, p.quantity 
FROM products 
    LEFT OUTER JOIN (SELECT * FROM purchases 
        WHERE status = 'reserved' 
        GROUP BY product_ID) AS  p ON p.product_ID = products.ID 
WHERE products.product_status !='deleted'`

但它在保留数量上返回0。

就查询而言,您几乎达到了要求,只是您需要将保留项目的数量相加,然后使用
分组方式,类似这样

SELECT
    pd.item AS 'Item', pd.qty AS 'Qty', IFNULL(pr.reserved_quantity, 0) AS 'Reserved Qty', (pd.qty+IFNULL(pr.reserved_quantity, 0)) AS 'Total'
FROM
    product pd
    LEFT OUTER JOIN (SELECT item, SUM(qty) AS 'reserved_quantity' FROM purchases WHERE `status`='reserve' GROUP BY 1) AS pr ON pd.item=pr.item

谢谢,这很有效。。。虽然他们的专栏并不多,但我完全理解了他们的想法。非常感谢你…@NimitzE。我在你的问题中使用了你自己提供的相同的列名,即使这样,只要你明白了,它也应该是一件小事。很高兴帮助哦,还有一件事,我已经删除了表1中的项目,我应该将
where子句
放在哪里?我的意思是,我有一个状态列,它的值被删除,我不想显示那些被删除的项目。如果它在
产品
表中,那么你必须在pd.item=pr.item
上的
之后添加新的
位置
。如果它在
purchases
表中,那么您必须在'where status='reserve'之后添加一个新条件谢谢,这是我的第一种查询,这个查询的名称是什么?选择左连接选择?