 |
รบกวนช่วยหน่อยครับ อยากคำนวณผลรวม 2 ตาราง แล้ว- กัน เอาค่าที่-กันได้อัพเดทเข้าตารางแรกครับ |
|
 |
|
|
 |
 |
|
Code (SQL)
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
น่าจะแบบนี้นะคับ ลองดูคับ
|
 |
 |
 |
 |
Date :
2014-11-27 21:42:00 |
By :
moomoohorn |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
Code (SQL)
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
ขอรบกวนอีกนิดนะครับทุกท่านที่เคารพผมลองใส่SQL แบบข้างบนแล้วเหมือนค่าที่ได้มันคาดเคลือนหรือเพราะค่าที่แท้ทั้งหมดในฐานข้อมูลมันเยอะมากรึเปล่าอ่าครับผมเก็บไฟตัวเลขเป็นFoatไม่ทราบว่าผมผิดตรงไหนรึเปล่า
ขอขอบคุณทุกท่านที่แสดงความคิดเห็นนะครับ
|
 |
 |
 |
 |
Date :
2014-11-27 22:47:50 |
By :
suapchan |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
เนื่องจาก 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
ปล. หรือจะลองอีกแบบ แบบนี้ไม่มีค่า null
Code (SQL)
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
#ต่อด้วย โค๊ดที่เลือกของ สองโค๊ดบน
|
ประวัติการแก้ไข 2014-11-28 07:24:38 2014-11-28 07:29:35 2014-11-28 21:55:55 2014-11-28 21:56:39
 |
 |
 |
 |
Date :
2014-11-28 07:09:16 |
By :
Chaidhanan |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ตอบความคิดเห็นที่ : 4 เขียนโดย : Chaidhanan เมื่อวันที่ 2014-11-28 07:09:16
รายละเอียดของการตอบ ::
ขอบคุณ คุณChaidhanan มากครับ แต่พอผมเอาโค้ดไปรันมันขึ้นแบบนี้ ผมใส่ผิดไปรึเปล่าคับช่วยดูหน่อยนะครับขอร้อง พอดีเป็นมือใหม่เลยแก้ไรไม่ค่อยเป็น
ผิดพลาด
คำค้น 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 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
|
ประวัติการแก้ไข 2014-11-28 11:37:18
 |
 |
 |
 |
Date :
2014-11-28 11:36:48 |
By :
suapchan |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
mysql version ไหนครับ งั้นเอา โค๊ดตัวที่สองละกันครับ 5555
|
ประวัติการแก้ไข 2014-11-28 12:34:59
 |
 |
 |
 |
Date :
2014-11-28 12:34:29 |
By :
Chaidhanan |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ตอบความคิดเห็นที่ : 6 เขียนโดย : Chaidhanan เมื่อวันที่ 2014-11-28 12:34:29
รายละเอียดของการตอบ ::
มันก็ขึ้นเหมือนกันอ่าครับ ส่วนผมใช้ phpMyAdmin - 2.10.3
ผิดพลาด
คำค้น SQL: เอกสารอ้างอิง
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
|
 |
 |
 |
 |
Date :
2014-11-28 12:44:25 |
By :
suapchan |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
FROM rairub unoin ขอโทษครับสกดผิด
union ครับ
|
 |
 |
 |
 |
Date :
2014-11-28 12:47:56 |
By :
Chaidhanan |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|

INSERT INTO `rairub` (`code`, `User`, `moneyrub`) VALUES
(1, 'ball', 10),
(2, 'lek', 20),
(3, 'ball', 30),
(4, 'lek', 100);
INSERT INTO `raijai` (`code`, `User`, `moneyjai`) VALUES
(1, 'lek', 10),
(2, 'lek', 20),
(3, 'lek', 30),
(4, 'ball', 10);
Code (SQL)
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 เตรียมไว้ก่อนนะครับ
|
ประวัติการแก้ไข 2014-11-28 22:04:49
 |
 |
 |
 |
Date :
2014-11-28 22:01:13 |
By :
Chaidhanan |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ถ้าเป็นผม ผมไม่สร้าง ตาราง total ครับ ผมจะใช้การคิวรี่ทุกครั้ง อยากเพิ่มเพิ่มได้เลย อยากลบก็ลบ
ถึงเวลาอยากได้ผลลัพธ์ ค่อยคิวรี่มาโชว์ครับ
|
 |
 |
 |
 |
Date :
2014-11-30 19:53:36 |
By :
Chaidhanan |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
แล้วที่คุณคิวรี่ เอาใส total คุณทำอย่างไร ก็ทำแบบนั้น แต่ไม่ต้องเอาเข้า total เท่านั้นแหล่ะ
|
 |
 |
 |
 |
Date :
2014-11-30 21:11:48 |
By :
Chaidhanan |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|