 |
มีค่า ซ้ำกัน อยู่ 3 ฟิวด์ ถ้าเรา จะ Group by ก็สามารถทำได้แค่ ฟิวด์ เดียว ถ้าเราอยาก ทำทั้งสาม ฟิวด์ จะทำอย่างไร คับ |
|
 |
|
|
 |
 |
|
มีค่า ซ้ำกัน อยู่ 3 ฟิวด์ ถ้าเรา จะ Group by ก็สามารถทำได้แค่ ฟิวด์ เดียว ถ้าเราอยาก ทำทั้งสาม ฟิวด์ จะทำอย่างไร คับ
มีฟิวด์ที่ซ้ำกัน 3 ฟิวด์
ฟิวด์ รหัส , ฟิวชื่อ , ฟิวด์บิล , ฟิวด์จำนวนเงิน

อยากให้ ออกมาแบบนี้ ครับ
รหัส , ชื่อบริษัท , บิล , จำนวนเงิน
942 , บริษัท เอ , 2 , 6173
928 , บริษัท สวัสดี , 12 , 79648
Tag : PHP, HTML/CSS, JavaScript, Action Script, Ajax, jQuery
|
|
 |
 |
 |
 |
Date :
2014-10-06 10:48:01 |
By :
031130 |
View :
3737 |
Reply :
12 |
|
 |
 |
 |
 |
|
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ลองแบบนี้ยัง
Code (PHP)
GROUP BY ตาราง.ฟิลด์, ตาราง.ฟิลด์, ตาราง.ฟิลด์
|
 |
 |
 |
 |
Date :
2014-10-06 10:58:18 |
By :
sabaitip |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ลองแล้ว ครับ ถ้า group by ตัวใดตัวหนึ่งได้ สองตัว ไม่ได้ครับ
|
 |
 |
 |
 |
Date :
2014-10-06 15:12:08 |
By :
031130 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ลองมานั่งอ่านใหม่อีกรอบ
อยากให้ ออกมาแบบนี้ ครับ
รหัส , ชื่อบริษัท , บิล , จำนวนเงิน
942 , บริษัท เอ , 2 , 6173
928 , บริษัท สวัสดี , 12 , 79648
ทำไมไม่ group by รหัส
แล้วก็ sum บิล กับ เงิน อ่ะครับ ทำไมต้อง group by 3 ฟิลด์
|
 |
 |
 |
 |
Date :
2014-10-06 16:01:15 |
By :
sabaitip |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
select id, name, sum(bill) s_bill, sum(amount) as s_amt from table group by id, name
|
 |
 |
 |
 |
Date :
2014-10-06 20:42:10 |
By :
Chaidhanan |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ผมลืม บอกไปว่า บิล ซ้ำกัน เงินก็ซ้ำกัน ครับ เลย ทำแบบที่แนะนำไม่ได้
เก็บใน DB แบบนี้ ครับ

|
 |
 |
 |
 |
Date :
2014-10-07 10:35:09 |
By :
031130 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
แล้วไม่สร้าง unique ไว้ควบคุม id , bill ละครับจะได้ไ่ม่ซ้ำกัน
สำหรับตอนนี้วิธีแก้ ก็ กลุุ๊ป มันออกมา เอาส่วนที่เหมือนกันมาใช้
Code (SQL)
select( id, count(code), sum(amt) from
(select id, code, amt from table group by id, code, amt) as tmp
group by id
|
 |
 |
 |
 |
Date :
2014-10-07 12:15:53 |
By :
Chaidhanan |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ลองแล้ว error คับ
#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 'from
(select id, code, amt from table group by' at line 1
|
 |
 |
 |
 |
Date :
2014-10-07 15:06:52 |
By :
031130 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
เอ่อคือว่าโค๊ดผมเป็นตัวอย่างครับ สำหรับชื่อ field ปรับให้ตรงตามความเป็นจริงนะครับ
อย่าง from table เนี่ย table คุณต้องเอาชื่อจริงๆ ที่ใช้งานมาใส่แทน
id code amt นี่ก็เหมือนกันครับ ต้องเอาชื่อฟีลด์จริงๆ มาใส่ครับ
ผมแค่อ่านและทำความเข้าใจโจทย์ แล้วมาเขียนตัวอย่างให้นำไปปรับใช้เท่านั้นครับ
|
 |
 |
 |
 |
Date :
2014-10-07 20:32:38 |
By :
Chaidhanan |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ตอนนี้ ผลลัพธ์ ออกมาตรงแล้ว ครับ แต่ ที่ยังขาดคือ $sum_vat บวกกันเกิน ครับ ตอนนี้ยังทำไม่ได้ รบกวน แนะนำด้วย ครับ
Code (PHP)
$sqll_="SELECT Distinct(stock_num_run), sum_vat ,stock_date
from `table`
Group by stock_num_run DESC"
$query_1=mysql_query($sqll_);
$numrow = mysql_num_rows($query_1);
$i=1;
while($array_1=mysql_fetch_array($query_1)){
$sum_vat=$array_1['sum_vat'];
echo $sum_vat;
// ผลลัพธ์ จะออกมาเป็น 100 200 300
}
แต่อยากให้ sum_vat บวกกัน ครับ
|
 |
 |
 |
 |
Date :
2014-10-14 14:15:02 |
By :
031130 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ลองเอาตัวอย่างโค๊ด และ function ที่ผมเขียนให้ ดู ไปศึกษาหรือยังครับ ถ้ายังก็ลองศึกษาดูนะครับ
แค่นำไปปรับใช้ แทนที่ ชื่อตาราง ชื่อฟีลด์ที่ต้องการ ก็ได้แล้วครับ
โค๊ด คห 6
แต่ที่ยังติดปัญหาเพราะไม่ได้เอาสิ่งที่มีคนบอกไปศึกษาดูเลยมากกว่านะครับ
ปล. และดูจากโค๊ด ที่เขียน มันมั่วจนไม่รู้ว่าคุณกำลังทำอะไรอยู่
เอา distinct มาผสม กับ group by
เอา desc มาต่อ field group by
มันเหมือนกับคุณจับ โค๊ดมาเรียงกัน โดยไม่ได้อ่าน document ของ SQL เลยซักนิด
|
ประวัติการแก้ไข 2014-10-14 14:25:49 2014-10-14 14:28:57
 |
 |
 |
 |
Date :
2014-10-14 14:25:12 |
By :
Chaidhanan |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ลองเปลี่ยนตามที่แนะนำแล้ว คับ ผลไม่ออก
Code (PHP)
$sqll_="select(stock_name, count(stock_num_run), sum(sum_vat) from
(select stock_name, stock_num_run, sum_vat from `table`
group by stock_name, stock_num_run, sum_vat) AS tmp";
|
ประวัติการแก้ไข 2014-10-14 14:55:34
 |
 |
 |
 |
Date :
2014-10-14 14:53:38 |
By :
031130 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
$sqll_="select ( stock_name, count(stock_num_run), sum(sum_vat) from
(select stock_name, stock_num_run, sum_vat from `table`
group by stock_name, stock_num_run, sum_vat ) AS tmp";
วงเล็บเปิด สีแดง เอาไว้ทำไมครับ
แล้วโค๊ดบันทัดล่างนีี้
$query_1=mysql_query($sqll_);
เปลี่ยนเป็น
$query_1=mysql_query($sqll_) or die( $sqll ."<br>\n" . mysql_error());
จะได้แสดง error ให้เห็นครับว่าทำอะไรผิด
|
 |
 |
 |
 |
Date :
2014-10-14 15:00:11 |
By :
Chaidhanan |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|