select
sum(a.moneyrub) as moneyrub, sum(b.moneyjai) as moneyjai , sum(a.moneyrub) - sum(b.moneyjai) as Total
from rairub as a
left join raijai as b on (b.User = a.User)
group by a.User
select
sum(a.moneyrub) as moneyrub, sum(b.moneyjai) as moneyjai , sum(a.moneyrub) - sum(b.moneyjai) as Total
from rairub as a
left join raijai as b on (b.User = a.User)
group by a.User
เนื่องจาก 2 ตาราง บางคนอาจรับอยางเดียว บางคนอาจจ่ายอย่างเดียว
คำสั่ง sum() left join อาจได้ค่า null มาทำให้ผลผิดผลาดได้
และการใช้ left อาจไม่รองรับกับการทำงาน ให้เปลี่ยนเป็น แบบข้างล่างครับ
Code (SQL)
select
a.User,
sum(coalesce( a.moneyrub , 0) ) as moneyrub ,
sum(coalesce( b.moneyjai , 0) ) as moneyjai ,
sum(coalesce( a.moneyrub , 0) - coalesce( b.moneyjai , 0) ) as Total
from rairub as a
FULL OUTER JOIN raijai as b on (b.User = a.User)
group by a.User
select
User,
sum( rub ) as moneyrub ,
sum( jai ) as moneyjai ,
sum( rub - jai ) as Total
from (
select User, moneyrub rub, 0 jai from rairub
union all
select User, 0, moneyjai from raijai
) a
group by User
ปล. อีกครั้่ง ลืม ่ส่วน insert Code (SQL)
insert into total
#ต่อด้วย โค๊ดที่เลือกของ สองโค๊ดบน
SELECT a.User, SUM( COALESCE( a.moneyrub, 0 ) ) AS moneyrub, SUM( COALESCE( b.moneyjai, 0 ) ) AS moneyjai, SUM( COALESCE( a.moneyrub, 0 ) - COALESCE( b.moneyjai, 0 ) ) AS Total
FROM rairub AS a
FULL OUTER JOIN raijai AS b ON ( b.User = a.User )
GROUP BY User
LIMIT 0 , 30
MySQL แสดง: เอกสารอ้างอิง
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FULL OUTER JOIN raijai as b on ( b.User = a.User ) group by a.User
LIMIT 0, 30' at line 1
SELECT User, SUM( rub ) AS moneyrub, SUM( jai ) AS moneyjai, SUM( rub - jai ) AS Total
FROM (
SELECT User, moneyrub rub, 0jai
FROM rairub unoin
ALL SELECT User, 0, moneyjai
FROM raijai
)a
GROUP BY User
LIMIT 0 , 30
MySQL แสดง: เอกสารอ้างอิง
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'all select User , 0 , moneyjai from raijai ) a group by User
LIMIT 0, 30' at line 1
insert into total
select
User,
sum( rub ) as moneyrub ,
sum( jai ) as moneyjai ,
sum( rub - jai ) as Total
from (
select User, moneyrub rub, 0 jai from rairub
union all
select User, 0, moneyjai from raijai
) a
group by User
หมายเหตุ ต้อง สร้างตาราง total เตรียมไว้ก่อนนะครับ