Thảo luận - Hứa Hậu Tạ Xứng Đáng cho ai giúp mình đoạn CODE SQL WHERE COALESCE SUM | VN-Zoom | Cộng đồng Chia Sẻ Kiến Thức Công Nghệ và Phần Mềm Máy Tính

Adblocker detected! Please consider reading this notice.

We've detected that you are using AdBlock Plus or some other adblocking software which is preventing the page from fully loading.

We need money to operate the site, and almost all of it comes from our online advertising.

If possible, please support us by clicking on the advertisements.

Please add vn-z.vn to your ad blocking whitelist or disable your adblocking software.

×

Thảo luận Hứa Hậu Tạ Xứng Đáng cho ai giúp mình đoạn CODE SQL WHERE COALESCE SUM

songxanh

Gà con
Chào mọi người ạ
Mình hỏng biết đăng bài viết ở đâu
Phải khởi tạo bài mới
hay vào bài viết góc lập trình đăng hỏi bài ạ
em tính hỏi cái này các anh giúp em với ạ
Em bí quá làm mãi mãi không ra mất gần cả tuần rồi huhu.. có ai giúp em ko ạ
có gì cho em số tài khoản em hậu tạ ít trăm hoặc số đt em gửi ít trăm thẻ nạp đt ạ
em không dám nhờ không không vì... công sức của mọi người suy nghĩ để phải cần có cơm có gạo nên em mới... xin số xin tài khoản để hậu tạ nếu em chạy đc code thành công ạ
----------------------------------------------
$myQuery = "SELECT
DATE_FORMAT( sales.date, '%e' ) AS date,
COALESCE(sum(sales.total), 0) as total,
COALESCE(sum(sales.total_tax), 0) as tax,
COALESCE(sum(sales.total_discount), 0) as discount
FROM (sales)
WHERE DATE_FORMAT( sales.date, '%Y-%m' ) = '{$year}-{$month}'
GROUP BY DATE_FORMAT( sales.date, '%e' )";
----------------------------
chỗ cái dòng
COALESCE(sum(sales.total), 0) as total,
ví zụ:
database Sales
date ...............| total | paid_by
-----------------------
2022-04-19 | 100k | AA
2022-04-19 | 20k | BB
2022-04-19 | 50k | CC
2022-04-19 | 80k | AA
2022-04-19 | 30k | CC
2022-04-19 | 40k | BB

2022-04-18 | 105k | AA
2022-04-18 | 25k | BB
2022-04-18 | 55k | CC
2022-04-18 | 85k | AA
2022-04-18 | 35k | CC
2022-04-18 | 45k | BB

2022-04-18 | 109k | AA
2022-04-18 | 29k | BB
2022-04-18 | 59k | CC
2022-04-18 | 89k | AA
2022-04-18 | 39k | CC
2022-04-18 | 49k | BB

Biết total là
total của ngày: 2022-04-19 có tổng là: 100+20+50+80+30+40 = 320k
total của ngày: 2022-04-18 có tổng là: 105+25+55+85+35+45 = 350k
total của ngày: 2022-04-17 có tổng là: 109+29+59+89+39+49 = 374k
làm sao
để Tính tổng số cùng ngày của:
* total của ngày: 2022-04-19 có tổng là: 100+20+50+80+30+40 = 320k
total loại AA của ngày: 2022-04-19 là 100k + 80k = 180k
total loại BB của ngày: 2022-04-19 là 20k + 40k = 60k
total loại CC của ngày: 2022-04-19 là 50k + 30k = 80k

*total của ngày: 2022-04-18 có tổng là: 105+25+55+85+35+45 = 350k
total loại AA của ngày: 2022-04-18 là 105k + 85k = 190k
total loại BB của ngày: 2022-04-18 là 25k + 45k = 70k
total loại CC của ngày: 2022-04-18 là 55k + 35k = 90k

*total của ngày: 2022-04-17 có tổng là: 109+29+59+89+39+49 = 374k
total loại AA của ngày: 2022-04-17 là 109k + 89k = 198k
total loại BB của ngày: 2022-04-17 là 29k + 49k = 78k
total loại CC của ngày: 2022-04-17 là 59k + 39k = 98k


ví zụ:
*trong cùng ngày thì
tổng AA riêng, Tổng BB riêng, Tổng CC riêng, Tổng Chung Riêng
*qua ngày khác thì
tổng AA riêng khác, Tổng BB riêng khác, Tổng CC riêng khác, Tổng Chung Riêng khác
*cho tới 30 ngày trong tháng
--> thì phải có 30 kết quả khác nhau
bạn nào nếu làm được thì lấy nguyên cái Đoạn mã của mình rồi bạn hãy Ghi lại rõ ràng chuẩn mực theo cách của các bạn... Mình copy vào mà chạy được thì mình sẽ rất Cảm ơn Hậu tạ bạn ạ


Chỉnh đoạn code sao vậy mọi người... Giúp giùm mình với ạ... Mình mò mờ mắt mãi ko ra
Ai giúp mình xong vui lòng để số đt lại mình bắn thẻ cao đt hoặc số tài khoản ạ... xin biết ơn và hậu tạ nếu chạy đc code ạ
z3349827659527-6a69cd417b27af9f88c8a0a06a76358e-huongdan-cacdong-SQL-sum-18042022at16h31.png

Code ở dưới em gộp chung mà làm không được ạ. Nó chỉ ra đúng mỗi dòng Total, tax, discount-giảm thôi ạ
------------------
public function getDailySales($year, $month)
{

/*$myQuery = "SELECT DATE_FORMAT( date, '%e' ) AS date, SUM( COALESCE( total, 0 ) ) AS total
FROM sales
WHERE DATE_FORMAT( date, '%Y-%m' ) = '{$year}-{$month}' AND status != 'cancelled'
GROUP BY DATE_FORMAT( date, '%e' )";*/

$myQuery = "
SELECT
DATE_FORMAT( sales.date, '%e' ) AS date,
paid_by,
COALESCE(sum(sales.total_tax), 0) as tax,
COALESCE(sum(sales.total_discount), 0) as discount,
COALESCE((select COALESCE(sum(sales.total), 0) FROM sales WHERE paid_by = 'AA' AND DATE_FORMAT( sales.date, '%Y-%m' ) = '{$year}-{$month}'),0) as totalAA,
COALESCE((select COALESCE(sum(sales.total), 0) FROM sales WHERE paid_by = 'BB' AND DATE_FORMAT( sales.date, '%Y-%m' ) = '{$year}-{$month}'), 0) as totalBB,
COALESCE((select COALESCE(sum(sales.total), 0) FROM sales WHERE paid_by = 'CC' AND DATE_FORMAT( sales.date, '%Y-%m' ) = '{$year}-{$month}'), 0) as totalCC,
COALESCE((select COALESCE(sum(sales.total), 0) FROM sales WHERE paid_by = 'DD' AND DATE_FORMAT( sales.date, '%Y-%m' ) = '{$year}-{$month}'), 0) as totalDD,
COALESCE((select COALESCE(sum(sales.total), 0) FROM sales WHERE paid_by = 'EE' AND DATE_FORMAT( sales.date, '%Y-%m' ) = '{$year}-{$month}'), 0) as totalEE,
COALESCE((select COALESCE(sum(sales.total), 0) FROM sales WHERE paid_by = 'FF' AND DATE_FORMAT( sales.date, '%Y-%m' ) = '{$year}-{$month}'), 0) as totalFF,
COALESCE((select COALESCE(sum(sales.total), 0) FROM sales WHERE paid_by = 'GG' AND DATE_FORMAT( sales.date, '%Y-%m' ) = '{$year}-{$month}'), 0) as totalGG,
COALESCE((select COALESCE(sum(sales.total), 0) FROM sales WHERE paid_by = 'HH' AND DATE_FORMAT( sales.date, '%Y-%m' ) = '{$year}-{$month}'), 0) as totalHH,
COALESCE((select COALESCE(sum(sales.total), 0) FROM sales WHERE paid_by = 'ZZ' AND DATE_FORMAT( sales.date, '%Y-%m' ) = '{$year}-{$month}'), 0) as totalZZ,
COALESCE(sum(sales.total), 0) as total,

COALESCE(sum(sales.total), 0) as totalDo,
COALESCE(sum(sales.total), 0) as totalXanh
FROM (sales)
WHERE DATE_FORMAT( sales.date, '%Y-%m' ) = '{$year}-{$month}'
GROUP BY DATE_FORMAT( sales.date, '%e' )
";
$q = $this->db->query($myQuery, false);
if($q->num_rows() > 0) {
foreach (($q->result()) as $row) {
$data[] = $row;
}

return $data;
}
}
-------------------------------------------------------
chỗ
COALESCE(sum(sales.total), 0) as totalDo, -- em chưa có code được vì nó cộng trừ ở trên vẫn chưa làm được
COALESCE(sum(sales.total), 0) as totalXanh -- em chưa có code được vì nó cộng trừ ở trên vẫn chưa làm được

Ai có thể chỉnh thì inbox riêng em ... thỏa thuận rồi hẹn giờ vào trực tiếp máy em edit nếu muôn ạ... anh em muốn sao cũng đc ạ... vui thi cùng vui, làm đc thì em hậu tạ đôi chút theo ý của a e ạ...
 
Sửa lần cuối:

newflex

Búa Gỗ
Em không biết gì về sql, Em code nosql : Phương án của em là đếm(count) tất cả các biến giống nhau rồi tập hợp lại một mảng:( nếu số lượng không biết trước thì dùng wargs or args), sau đó đổ ra thôi ạ.
 

Swings Onlyone

Rìu Vàng Đôi
VIP User
tôi quăng cái này cho anh bạn back-end bên tôi (rất dày kinh nghiệm nhé)
thanh niên xem xong nói "tiền hậu tạ không đủ tiền chất xám đâu, không nhận"

nghĩa là anh bạn tôi có gửi code cho bạn paste nào cũng là 70% không chạy được, muốn chạy được thì lại phải team sang máy của bạn kiểm tra kết nối / cấu hình / file / dòng lệnh liên kết..........etc

nó lười lắm nó chẳng làm đâu {embarrassed}

bác vào đây thuê người làm xem có ai nhận không (yên tâm không phải hàng VN, hàng Inter đấy):

Mã:
https://www.vn.freelancer.com
 

malemkhoang

Rìu Chiến
Chào mọi người ạ
Mình hỏng biết đăng bài viết ở đâu
Phải khởi tạo bài mới
hay vào bài viết góc lập trình đăng hỏi bài ạ
em tính hỏi cái này các anh giúp em với ạ
Em bí quá làm mãi mãi không ra mất gần cả tuần rồi huhu.. có ai giúp em ko ạ
có gì cho em số tài khoản em hậu tạ ít trăm hoặc số đt em gửi ít trăm thẻ nạp đt ạ
em không dám nhờ không không vì... công sức của mọi người suy nghĩ để phải cần có cơm có gạo nên em mới... xin số xin tài khoản để hậu tạ nếu em chạy đc code thành công ạ
----------------------------------------------
$myQuery = "SELECT
DATE_FORMAT( sales.date, '%e' ) AS date,
COALESCE(sum(sales.total), 0) as total,
COALESCE(sum(sales.total_tax), 0) as tax,
COALESCE(sum(sales.total_discount), 0) as discount
FROM (sales)
WHERE DATE_FORMAT( sales.date, '%Y-%m' ) = '{$year}-{$month}'
GROUP BY DATE_FORMAT( sales.date, '%e' )";
----------------------------
chỗ cái dòng
COALESCE(sum(sales.total), 0) as total,
ví zụ:
database Sales
date ...............| total | paid_by
-----------------------
2022-04-19 | 100k | AA
2022-04-19 | 20k | BB
2022-04-19 | 50k | CC
2022-04-19 | 80k | AA
2022-04-19 | 30k | CC
2022-04-19 | 40k | BB

2022-04-18 | 105k | AA
2022-04-18 | 25k | BB
2022-04-18 | 55k | CC
2022-04-18 | 85k | AA
2022-04-18 | 35k | CC
2022-04-18 | 45k | BB

2022-04-18 | 109k | AA
2022-04-18 | 29k | BB
2022-04-18 | 59k | CC
2022-04-18 | 89k | AA
2022-04-18 | 39k | CC
2022-04-18 | 49k | BB

Biết total là
total của ngày: 2022-04-19 có tổng là: 100+20+50+80+30+40 = 320k
total của ngày: 2022-04-18 có tổng là: 105+25+55+85+35+45 = 350k
total của ngày: 2022-04-17 có tổng là: 109+29+59+89+39+49 = 374k
làm sao
để Tính tổng số cùng ngày của:
* total của ngày: 2022-04-19 có tổng là: 100+20+50+80+30+40 = 320k
total loại AA của ngày: 2022-04-19 là 100k + 80k = 180k
total loại BB của ngày: 2022-04-19 là 20k + 40k = 60k
total loại CC của ngày: 2022-04-19 là 50k + 30k = 80k

*total của ngày: 2022-04-18 có tổng là: 105+25+55+85+35+45 = 350k
total loại AA của ngày: 2022-04-18 là 105k + 85k = 190k
total loại BB của ngày: 2022-04-18 là 25k + 45k = 70k
total loại CC của ngày: 2022-04-18 là 55k + 35k = 90k

*total của ngày: 2022-04-17 có tổng là: 109+29+59+89+39+49 = 374k
total loại AA của ngày: 2022-04-17 là 109k + 89k = 198k
total loại BB của ngày: 2022-04-17 là 29k + 49k = 78k
total loại CC của ngày: 2022-04-17 là 59k + 39k = 98k


ví zụ:
*trong cùng ngày thì
tổng AA riêng, Tổng BB riêng, Tổng CC riêng, Tổng Chung Riêng
*qua ngày khác thì
tổng AA riêng khác, Tổng BB riêng khác, Tổng CC riêng khác, Tổng Chung Riêng khác
*cho tới 30 ngày trong tháng
--> thì phải có 30 kết quả khác nhau
bạn nào nếu làm được thì lấy nguyên cái Đoạn mã của mình rồi bạn hãy Ghi lại rõ ràng chuẩn mực theo cách của các bạn... Mình copy vào mà chạy được thì mình sẽ rất Cảm ơn Hậu tạ bạn ạ


Chỉnh đoạn code sao vậy mọi người... Giúp giùm mình với ạ... Mình mò mờ mắt mãi ko ra
Ai giúp mình xong vui lòng để số đt lại mình bắn thẻ cao đt hoặc số tài khoản ạ... xin biết ơn và hậu tạ nếu chạy đc code ạ
Tui thấy câu lệnh SQL của bạn nó chẳng liên quan gì đến yêu cầu tính toán của bạn.
Yêu cầu tính toán của bạn nó liên quan đến PIVOT SQL, PIVOT Excel...
 

songxanh

Gà con
Tui thấy câu lệnh SQL của bạn nó chẳng liên quan gì đến yêu cầu tính toán của bạn.
Yêu cầu tính toán của bạn nó liên quan đến PIVOT SQL, PIVOT Excel...
àh ý của mình là bạn chỉnh sửa code thêm giúp mình
đoạn code hiện tại nó chỉ đúng với total mỗi ngày
chứ nó ko có đúng với total theo từng chủng loại... thì phải code thêm ạ
$myQuery = "SELECT
DATE_FORMAT( sales.date, '%e' ) AS date,
COALESCE(sum(sales.total), 0) as total,
COALESCE(sum(sales.total_tax), 0) as tax,
COALESCE(sum(sales.total_discount), 0) as discount
FROM (sales)
WHERE DATE_FORMAT( sales.date, '%Y-%m' ) = '{$year}-{$month}' and paid_by = 'AA'
GROUP BY DATE_FORMAT( sales.date, '%e' )";
------thì nó ra đúng kết quả cho loại AA khi em thêm and paid_by = 'AA'-----------

------còn khi em thêm BB thì nó ra đúng kết quả cho BB------------------------------------
$myQuery = "SELECT
DATE_FORMAT( sales.date, '%e' ) AS date,
COALESCE(sum(sales.total), 0) as total,
COALESCE(sum(sales.total_tax), 0) as tax,
COALESCE(sum(sales.total_discount), 0) as discount
FROM (sales)
WHERE DATE_FORMAT( sales.date, '%Y-%m' ) = '{$year}-{$month}' and paid_by = 'BB'
GROUP BY DATE_FORMAT( sales.date, '%e' )";
------thì nó ra đúng kết quả cho loại BB khi em thêm and paid_by = 'BB'-----------

------còn khi em thêm CC thì nó ra đúng kết quả cho CC------------------------------------
$myQuery = "SELECT
DATE_FORMAT( sales.date, '%e' ) AS date,
COALESCE(sum(sales.total), 0) as total,
COALESCE(sum(sales.total_tax), 0) as tax,
COALESCE(sum(sales.total_discount), 0) as discount
FROM (sales)
WHERE DATE_FORMAT( sales.date, '%Y-%m' ) = '{$year}-{$month}' and paid_by = 'CC'
GROUP BY DATE_FORMAT( sales.date, '%e' )";
------thì nó ra đúng kết quả cho loại AA khi em thêm and paid_by = 'CC'-----------

z3349827659527-6a69cd417b27af9f88c8a0a06a76358e-huongdan-cacdong-SQL-sum-18042022at16h31.png

Code ở dưới em gộp chung mà làm không được ạ. Nó chỉ ra đúng mỗi dòng Total, tax, discount-giảm thôi ạ

------------------
public function getDailySales($year, $month)
{

/*$myQuery = "SELECT DATE_FORMAT( date, '%e' ) AS date, SUM( COALESCE( total, 0 ) ) AS total
FROM sales
WHERE DATE_FORMAT( date, '%Y-%m' ) = '{$year}-{$month}' AND status != 'cancelled'
GROUP BY DATE_FORMAT( date, '%e' )";*/

$myQuery = "
SELECT
DATE_FORMAT( sales.date, '%e' ) AS date,
paid_by,
COALESCE(sum(sales.total_tax), 0) as tax,
COALESCE(sum(sales.total_discount), 0) as discount,
COALESCE((select COALESCE(sum(sales.total), 0) FROM sales WHERE paid_by = 'AA' AND DATE_FORMAT( sales.date, '%Y-%m' ) = '{$year}-{$month}'),0) as totalAA,
COALESCE((select COALESCE(sum(sales.total), 0) FROM sales WHERE paid_by = 'BB' AND DATE_FORMAT( sales.date, '%Y-%m' ) = '{$year}-{$month}'), 0) as totalBB,
COALESCE((select COALESCE(sum(sales.total), 0) FROM sales WHERE paid_by = 'CC' AND DATE_FORMAT( sales.date, '%Y-%m' ) = '{$year}-{$month}'), 0) as totalCC,
COALESCE((select COALESCE(sum(sales.total), 0) FROM sales WHERE paid_by = 'DD' AND DATE_FORMAT( sales.date, '%Y-%m' ) = '{$year}-{$month}'), 0) as totalDD,
COALESCE((select COALESCE(sum(sales.total), 0) FROM sales WHERE paid_by = 'EE' AND DATE_FORMAT( sales.date, '%Y-%m' ) = '{$year}-{$month}'), 0) as totalEE,
COALESCE((select COALESCE(sum(sales.total), 0) FROM sales WHERE paid_by = 'FF' AND DATE_FORMAT( sales.date, '%Y-%m' ) = '{$year}-{$month}'), 0) as totalFF,
COALESCE((select COALESCE(sum(sales.total), 0) FROM sales WHERE paid_by = 'GG' AND DATE_FORMAT( sales.date, '%Y-%m' ) = '{$year}-{$month}'), 0) as totalGG,
COALESCE((select COALESCE(sum(sales.total), 0) FROM sales WHERE paid_by = 'HH' AND DATE_FORMAT( sales.date, '%Y-%m' ) = '{$year}-{$month}'), 0) as totalHH,
COALESCE((select COALESCE(sum(sales.total), 0) FROM sales WHERE paid_by = 'ZZ' AND DATE_FORMAT( sales.date, '%Y-%m' ) = '{$year}-{$month}'), 0) as totalZZ,
COALESCE(sum(sales.total), 0) as total,

COALESCE(sum(sales.total), 0) as totalDo,
COALESCE(sum(sales.total), 0) as totalXanh
FROM (sales)
WHERE DATE_FORMAT( sales.date, '%Y-%m' ) = '{$year}-{$month}'
GROUP BY DATE_FORMAT( sales.date, '%e' )
";
$q = $this->db->query($myQuery, false);
if($q->num_rows() > 0) {
foreach (($q->result()) as $row) {
$data[] = $row;
}

return $data;
}
}
-------------------------------------------------------
chỗ
COALESCE(sum(sales.total), 0) as totalDo, -- em chưa có code được vì nó cộng trừ ở trên vẫn chưa làm được
COALESCE(sum(sales.total), 0) as totalXanh -- em chưa có code được vì nó cộng trừ ở trên vẫn chưa làm được
 
Sửa lần cuối:

songxanh

Gà con
tôi quăng cái này cho anh bạn back-end bên tôi (rất dày kinh nghiệm nhé)
thanh niên xem xong nói "tiền hậu tạ không đủ tiền chất xám đâu, không nhận"

nghĩa là anh bạn tôi có gửi code cho bạn paste nào cũng là 70% không chạy được, muốn chạy được thì lại phải team sang máy của bạn kiểm tra kết nối / cấu hình / file / dòng lệnh liên kết..........etc

nó lười lắm nó chẳng làm đâu {embarrassed}

bác vào đây thuê người làm xem có ai nhận không (yên tâm không phải hàng VN, hàng Inter đấy):

Mã:
https://www.vn.freelancer.com
thì làm được có quyền iu cầu thêm ạ...

àh em past lại cái bài của em nè ạ
Tui thấy câu lệnh SQL của bạn nó chẳng liên quan gì đến yêu cầu tính toán của bạn.
Yêu cầu tính toán của bạn nó liên quan đến PIVOT SQL, PIVOT Excel...
àh ý của mình là bạn chỉnh sửa code thêm giúp mình
đoạn code hiện tại nó chỉ đúng với total mỗi ngày
chứ nó ko có đúng với total theo từng chủng loại... thì phải code thêm ạ
$myQuery = "SELECT
DATE_FORMAT( sales.date, '%e' ) AS date,
COALESCE(sum(sales.total), 0) as total,
COALESCE(sum(sales.total_tax), 0) as tax,
COALESCE(sum(sales.total_discount), 0) as discount
FROM (sales)
WHERE DATE_FORMAT( sales.date, '%Y-%m' ) = '{$year}-{$month}' and paid_by = 'AA'
GROUP BY DATE_FORMAT( sales.date, '%e' )";
------thì nó ra đúng kết quả cho loại AA khi em thêm and paid_by = 'AA'-----------

------còn khi em thêm BB thì nó ra đúng kết quả cho BB------------------------------------
$myQuery = "SELECT
DATE_FORMAT( sales.date, '%e' ) AS date,
COALESCE(sum(sales.total), 0) as total,
COALESCE(sum(sales.total_tax), 0) as tax,
COALESCE(sum(sales.total_discount), 0) as discount
FROM (sales)
WHERE DATE_FORMAT( sales.date, '%Y-%m' ) = '{$year}-{$month}' and paid_by = 'BB'
GROUP BY DATE_FORMAT( sales.date, '%e' )";
------thì nó ra đúng kết quả cho loại BB khi em thêm and paid_by = 'BB'-----------

------còn khi em thêm CC thì nó ra đúng kết quả cho CC------------------------------------
$myQuery = "SELECT
DATE_FORMAT( sales.date, '%e' ) AS date,
COALESCE(sum(sales.total), 0) as total,
COALESCE(sum(sales.total_tax), 0) as tax,
COALESCE(sum(sales.total_discount), 0) as discount
FROM (sales)
WHERE DATE_FORMAT( sales.date, '%Y-%m' ) = '{$year}-{$month}' and paid_by = 'CC'
GROUP BY DATE_FORMAT( sales.date, '%e' )";
------thì nó ra đúng kết quả cho loại AA khi em thêm and paid_by = 'CC'-----------

z3349827659527-6a69cd417b27af9f88c8a0a06a76358e-huongdan-cacdong-SQL-sum-18042022at16h31.png

Code ở dưới em gộp chung mà làm không được ạ. Nó chỉ ra đúng mỗi dòng Total, tax, discount-giảm thôi ạ

------------------
public function getDailySales($year, $month)
{

/*$myQuery = "SELECT DATE_FORMAT( date, '%e' ) AS date, SUM( COALESCE( total, 0 ) ) AS total
FROM sales
WHERE DATE_FORMAT( date, '%Y-%m' ) = '{$year}-{$month}' AND status != 'cancelled'
GROUP BY DATE_FORMAT( date, '%e' )";*/

$myQuery = "
SELECT
DATE_FORMAT( sales.date, '%e' ) AS date,
paid_by,
COALESCE(sum(sales.total_tax), 0) as tax,
COALESCE(sum(sales.total_discount), 0) as discount,
COALESCE((select COALESCE(sum(sales.total), 0) FROM sales WHERE paid_by = 'AA' AND DATE_FORMAT( sales.date, '%Y-%m' ) = '{$year}-{$month}'),0) as totalAA,
COALESCE((select COALESCE(sum(sales.total), 0) FROM sales WHERE paid_by = 'BB' AND DATE_FORMAT( sales.date, '%Y-%m' ) = '{$year}-{$month}'), 0) as totalBB,
COALESCE((select COALESCE(sum(sales.total), 0) FROM sales WHERE paid_by = 'CC' AND DATE_FORMAT( sales.date, '%Y-%m' ) = '{$year}-{$month}'), 0) as totalCC,
COALESCE((select COALESCE(sum(sales.total), 0) FROM sales WHERE paid_by = 'DD' AND DATE_FORMAT( sales.date, '%Y-%m' ) = '{$year}-{$month}'), 0) as totalDD,
COALESCE((select COALESCE(sum(sales.total), 0) FROM sales WHERE paid_by = 'EE' AND DATE_FORMAT( sales.date, '%Y-%m' ) = '{$year}-{$month}'), 0) as totalEE,
COALESCE((select COALESCE(sum(sales.total), 0) FROM sales WHERE paid_by = 'FF' AND DATE_FORMAT( sales.date, '%Y-%m' ) = '{$year}-{$month}'), 0) as totalFF,
COALESCE((select COALESCE(sum(sales.total), 0) FROM sales WHERE paid_by = 'GG' AND DATE_FORMAT( sales.date, '%Y-%m' ) = '{$year}-{$month}'), 0) as totalGG,
COALESCE((select COALESCE(sum(sales.total), 0) FROM sales WHERE paid_by = 'HH' AND DATE_FORMAT( sales.date, '%Y-%m' ) = '{$year}-{$month}'), 0) as totalHH,
COALESCE((select COALESCE(sum(sales.total), 0) FROM sales WHERE paid_by = 'ZZ' AND DATE_FORMAT( sales.date, '%Y-%m' ) = '{$year}-{$month}'), 0) as totalZZ,
COALESCE(sum(sales.total), 0) as total,

COALESCE(sum(sales.total), 0) as totalDo,
COALESCE(sum(sales.total), 0) as totalXanh
FROM (sales)
WHERE DATE_FORMAT( sales.date, '%Y-%m' ) = '{$year}-{$month}'
GROUP BY DATE_FORMAT( sales.date, '%e' )
";
$q = $this->db->query($myQuery, false);
if($q->num_rows() > 0) {
foreach (($q->result()) as $row) {
$data[] = $row;
}

return $data;
}
}
-------------------------------------------------------
chỗ
COALESCE(sum(sales.total), 0) as totalDo, -- em chưa có code được vì nó cộng trừ ở trên vẫn chưa làm được
COALESCE(sum(sales.total), 0) as totalXanh -- em chưa có code được vì nó cộng trừ ở trên vẫn chưa làm được
 
Sửa lần cuối:

malemkhoang

Rìu Chiến
thì làm được có quyền iu cầu thêm ạ...

àh em past lại cái bài của em nè ạ


Code ở dưới em gộp chung mà làm không được ạ. Nó chỉ ra đúng mỗi dòng Total, tax, discount-giảm thôi ạ

------------------
public function getDailySales($year, $month)
{

/*$myQuery = "SELECT DATE_FORMAT( date, '%e' ) AS date, SUM( COALESCE( total, 0 ) ) AS total
FROM sales
WHERE DATE_FORMAT( date, '%Y-%m' ) = '{$year}-{$month}' AND status != 'cancelled'
GROUP BY DATE_FORMAT( date, '%e' )";*/

$myQuery = "
SELECT
DATE_FORMAT( sales.date, '%e' ) AS date,
paid_by,
COALESCE(sum(sales.total_tax), 0) as tax,
COALESCE(sum(sales.total_discount), 0) as discount,
COALESCE((select COALESCE(sum(sales.total), 0) FROM sales WHERE paid_by = 'AA' AND DATE_FORMAT( sales.date, '%Y-%m' ) = '{$year}-{$month}'),0) as totalAA,
COALESCE((select COALESCE(sum(sales.total), 0) FROM sales WHERE paid_by = 'BB' AND DATE_FORMAT( sales.date, '%Y-%m' ) = '{$year}-{$month}'), 0) as totalBB,
COALESCE((select COALESCE(sum(sales.total), 0) FROM sales WHERE paid_by = 'CC' AND DATE_FORMAT( sales.date, '%Y-%m' ) = '{$year}-{$month}'), 0) as totalCC,
COALESCE((select COALESCE(sum(sales.total), 0) FROM sales WHERE paid_by = 'DD' AND DATE_FORMAT( sales.date, '%Y-%m' ) = '{$year}-{$month}'), 0) as totalDD,
COALESCE((select COALESCE(sum(sales.total), 0) FROM sales WHERE paid_by = 'EE' AND DATE_FORMAT( sales.date, '%Y-%m' ) = '{$year}-{$month}'), 0) as totalEE,
COALESCE((select COALESCE(sum(sales.total), 0) FROM sales WHERE paid_by = 'FF' AND DATE_FORMAT( sales.date, '%Y-%m' ) = '{$year}-{$month}'), 0) as totalFF,
COALESCE((select COALESCE(sum(sales.total), 0) FROM sales WHERE paid_by = 'GG' AND DATE_FORMAT( sales.date, '%Y-%m' ) = '{$year}-{$month}'), 0) as totalGG,
COALESCE((select COALESCE(sum(sales.total), 0) FROM sales WHERE paid_by = 'HH' AND DATE_FORMAT( sales.date, '%Y-%m' ) = '{$year}-{$month}'), 0) as totalHH,
COALESCE((select COALESCE(sum(sales.total), 0) FROM sales WHERE paid_by = 'ZZ' AND DATE_FORMAT( sales.date, '%Y-%m' ) = '{$year}-{$month}'), 0) as totalZZ,
COALESCE(sum(sales.total), 0) as total,

COALESCE(sum(sales.total), 0) as totalDo,
COALESCE(sum(sales.total), 0) as totalXanh
FROM (sales)
WHERE DATE_FORMAT( sales.date, '%Y-%m' ) = '{$year}-{$month}'
GROUP BY DATE_FORMAT( sales.date, '%e' )
";
$q = $this->db->query($myQuery, false);
if($q->num_rows() > 0) {
foreach (($q->result()) as $row) {
$data[] = $row;
}

return $data;
}
}
-------------------------------------------------------
chỗ
COALESCE(sum(sales.total), 0) as totalDo, -- em chưa có code được vì nó cộng trừ ở trên vẫn chưa làm được
COALESCE(sum(sales.total), 0) as totalXanh -- em chưa có code được vì nó cộng trừ ở trên vẫn chưa làm được
Tui thấy PIVOT xử nhanh, gọn, chính xác mà.
 

malemkhoang

Rìu Chiến
Hảo làm bên php sql... dân ko chuyên... chủ yếu mày mò góp nhặt... Hảo hong hiu PIVOT là gì ạ... hixx
Vậy ngon rồi. Đỡ mất tiền đi thuê. Dùng tiền đó để học PIVOT SQL. Trước tiên làm thử bằng Excel cho đã mắt...​
 


Top