1, Hiển thị danh sách phiếu chi gồm: ID, Ngày chi, Người chi, Người nhận, Số tiền, Hạng mục chi, Ghi chú, Tài khoản, Trạng thái
SELECT bills.id, bills.transaction_date, NGUOI_THU.fullname, NGUOI_CHI.fullname, bills.amount, bill_categories.name,bills.note,THU.name,bills.status
FROM bills
RIGHT JOIN accounts as CHI ON bills.account_send_id = CHI.id
RIGHT JOIN accounts as THU ON bills.account_receive_id = THU.id
RIGHT JOIN bill_categories ON bills.bill_categories_id = bill_categories.id
RIGHT JOIN users as NGUOI_THU ON THU.user_id = NGUOI_THU.id
RIGHT JOIN users as NGUOI_CHI ON CHI.user_id = NGUOI_CHI.id
A - B
Left: Neu B khop voi A -> tra ve ket qua, nguoc lai tra ve null
Right: Neu A khop voi -> tra ve ket qua, nguoc lai tra ve null
2, Hiển thị danh sách phiếu thu từ ngày 01/05/2018 đến ngày 05/06/2018
//SELECT * FROM bills WHERE type = 'THU' AND transaction_date BETWEEN '2018/05/01' AND '2018/06/05'
>>Cách 2 = WHERE transtraction_date <=A AND ...>=B
3, Hiển thị danh sách phiếu chi từ ngày 01/05/2018 đến ngày 05/06/2018
//SELECT * FROM bills WHERE type = 'CHI' AND transaction_date BETWEEN '2018/05/01' AND '2018/06/05'
4, Tìm kiếm danh sách phiếu thu, chi theo tên người nhận, người chi, theo nội dung chi, số phiếu
//theo Tên người nhận
SELECT bills.transaction_code as MA_THU_CHI, users.fullname FROM bills,accounts,users WHERE account_receive_id IS NOT NULL AND bills.account_receive_id = accounts.id AND accounts.user_id = users.id AND users.fullname LIKE '%Quang'
---
SELECT bills.*, users.fullname FROM bills
INNER JOIN accounts ON accounts.id=bills.account_receive_id
INNER JOIN users ON users.id=accounts.user_id
WHERE users.fullname LIKE '%Quang%'
//theo tên người chi
SELECT bills.transaction_code as MA_THU_CHI, users.fullname FROM bills,accounts,users WHERE account_send_id IS NOT NULL AND bills.account_send_id = accounts.id AND accounts.user_id = users.id AND users.fullname LIKE '%Ngọc'
//theo nội dung chi (BILL_CATEGORIES)
SELECT bills.transaction_code as MA_THU_CHI, users.fullname FROM bills,accounts,users WHERE account_send_id IS NOT NULL AND bills.account_send_id = accounts.id AND accounts.user_id = users.id AND bills.note LIKE '%Test%'
//Theo số phiếu
SELECT bills.transaction_code as MA_THU_CHI, users.fullname FROM bills,accounts,users WHERE account_send_id IS NOT NULL AND bills.account_send_id = accounts.id AND accounts.user_id = users.id AND bills.transaction_code = 'CHI001'
5, Thống kê tổng số tiền thu, chikhoản
//SELECT SUM(amount) as TONG_THU FROM bills WHERE type = 'THU'
//SELECT SUM(amount) as TONG_CHI FROM bills WHERE type = 'CHI'
//SELECT SUM(amount) as TONG_GIAO_DICH FROM bills WHERE type IN('THU','CHI','CHUYEN')
6, Hiển thị tổng số tiền thu chi theo từng loại tài
//CHI
SELECT SUM(bills.amount),accounts.name,bills.type FROM bills,accounts WHERE account_send_id IS NOT NULL AND bills.account_send_id = accounts.id AND bills.type = 'CHI' GROUP BY accounts.name
Hiển thị tổng số tiền thu chi theo từng loại tài khoản, theo từng user
SELECT SUM(bills.amount) as total_expense, accounts.id as account_id, users.id as user_id, accounts.name as account_name, users.fullname as account_holder, bills.type FROM bills,accounts,users
WHERE account_send_id IS NOT NULL AND bills.account_send_id = accounts.id
AND accounts.user_id = users.id
AND bills.type = 'CHI' GROUP BY accounts.name
//THU
SELECT SUM(bills.amount),accounts.name,bills.type FROM bills,accounts WHERE account_receive_id IS NOT NULL AND bills.account_receive_id = accounts.id AND bills.type = 'THU' GROUP BY accounts.name
7, Hiển thị thông tin những người nhận được tổng số tiền từ 500 trở lên.
//C1 - Merge table
//SELECT bills.amount as THU_HON_500, users.fullname as LUCKY_MAN FROM bills,users WHERE amount > 500 AND bills.account_receive_id = users.id
//C2-Inner Join
//SELECT bills.amount as THU_HON_500, users.fullname as LUCKY_MAN FROM bills
INNER JOIN users ON bills.account_receive_id = users.id WHERE amount > 500
8, Thông kê tổng số tiền thu., chi theo ngày.
//SELECT transaction_date, SUM(amount) FROM bills GROUP BY transaction_date
-----------
Bài 1 + 8 + bài 8 lọc theo ngày (date picker) sắp xếp theo ngày tháng, số tiền, người thu - chi