mysql - INSERT ... SELECT Syntax issue when value(s) from two or more different query -
i have table name shop_balance. has 3 columns
(shop_balance_id(int,pk),
shop_balance(double),
balance_date(date)).
shop_balance(double) column use 2 sub query.
1.get last shop balance amount row shop_balance column in shop_balance table.
2.get purchase amount after 1 purchase product(s).
, subtract them , current shop balance
my query here
insert shop_balance select null, ( (select shop_balance shop_balance shop_balance_id=(select max(shop_balance_id) shop_balance) ) - ( select sum(pr_pur_cost_price*quantity) net product_purchase_item left join product_purchases p on p.product_purchase_item_id=i.product_purchase_item_id p.insert_operation=$id group p.insert_operation ) ),curdate();
it clear 2 sub query different condition , no direct relation them. above insert
query work well. idea use many sub query without insert ... select
syntax insert
1 value? if not, how can convert insert ... select
syntax?
you have calculation way calculation. guessing trigger might better meet needs, doing logic in insert
fine.
the following simplifies query. eliminates double subquery on shop_balance
, changes left join
inner join (you have condition on second table), , eliminates group by
second subquery:
insert shop_balance select null, ((select shop_balance shop_balance order shop_balance_id desc limit 1 ) - (select sum(pr_pur_cost_price*quantity) net product_purchase_item join product_purchases p on p.product_purchase_item_id=i.product_purchase_item_id p.insert_operation=$id ) ), curdate();
you should list columns in insert
clause, , eliminate first null
(it set null default). final curdate()
suggests might want automatic column store insertion time well.
Comments
Post a Comment