【发布时间】:2015-12-19 19:32:07
【问题描述】:
我有 3 张桌子,User, Payment, Type Of Payment
喜欢:
CREATE TABLE User (
`userID` INTEGER PRIMARY KEY AUTOINCREMENT,
`userName` varchar(4)
);
INSERT INTO User values
(1, 'Tom'),
(2, 'Kate'),
(3, 'Karla');
CREATE TABLE typePayment (
typeID INTEGER PRIMARY KEY AUTOINCREMENT,
namePayment VARCHAR(6) NOT NULL
);
INSERT INTO typePayment values
(1,'Cash'),
(2,'Check'),
(3,'Both');
CREATE TABLE Payment (
`paymentID` INTEGER PRIMARY KEY AUTOINCREMENT,
`idUser` int,
`idTypePayment` int,
`info` varchar(14)
);
INSERT INTO Payment VALUES
(1, 1, 1, 'ball'),
(2, 1, 1, 'book'),
(3, 1, 2, 'book'),
(4, 2, 1, 'book');
当加入表格以咨询我得到的人的付款时
userID userName namePayment info
1 Tom Cash ball
1 Tom Cash book
1 Tom Check book
2 Kate Cash book
通过以下查询
SELECT u.userID ,u.userName, te.namePayment , e.info
FROM User u
INNER JOIN Payment e
ON u.userID = e.idUser
INNER JOIN typePayment te
ON e.idTypePayment = te.typeID
order by u.userID;
但是我想计算对每个人进行的总付款类型的数量,例如:
userID userName namePayment info noCash noCheck noBoth
1 Tom Cash ball 2 1 0
1 Tom Cash book 2 1 0
1 Tom Check book 2 1 0
2 Kate Cash book 1 0 0
怎么做? (请看fiddle,我用的是SQLite)
【问题讨论】: