我试图显示特定用户的费用清单。
每笔费用都可以有一个类型。
费用,用户和类型都在不同的表格中。
当我尝试使用JOIN显示列表时,我得到重复的值:
SELECT DISTINCT
gastos.gastoID,
gastos.userID,
tiposPago.tipoPago AS tipo
FROM gastos
LEFT JOIN tiposPagoGastos
ON gastos.userID = tiposPagoGastos.userID
LEFT JOIN tiposPago
ON tiposPagoGastos.tiposPagoID = tiposPago.tiposPagoID
WHERE gastos.userID = 8
这是我的费用表:
CREATE TABLE gastos(
gastoID int unsigned not null auto_increment primary key,
userID int not null,
fecha char(25) null COMMENT 'en formato timestamp',
monto int(10) null,
detalles text null
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
这是我的付款方式表
CREATE TABLE tiposPago(
tiposPagoID int unsigned not null auto_increment primary key,
tipoPago varchar(300) null,
userID int not null,
detalles text null
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
这是加入付款类型和费用
的表格CREATE TABLE tiposPagoGastos(
tiposPagoGastosID int unsigned not null auto_increment primary key,
gastoID int not null,
tiposPagoID int not null,
userID int not null
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
此用户有两种类型的费用:"美国运通"和"签证"
这是我期望的结果:
gastoID -- userID -- tipo
64 ------- 8 ------ American Express
65 ------- 8 ------ Visa
这是我得到的结果:
gastoID -- userID -- tipo
64 ------- 8 ------ American Express
65 ------- 8 ------ American Express
64 ------- 8 ------ Visa
65 ------- 8 ------ Visa
如果我添加到查询:GROUP BY gastos.gastoID
,这是我得到的结果:
gastoID -- userID -- tipo
64 ------- 8 ------ American Express
65 ------- 8 ------ American Express
最后一个结果不正确,因为gastoID" 65"应该是签证。
tiposPago表
tiposPagoID tipoPago userID detalles
1 VISA 8 banco Galicia
2 American Express 8 Santander
tiposPagoGastos表
gastoID userID tiposPagoID
64 8 2
65 8 1
如何获得没有重复结果的正确列表?
答案 0 :(得分:0)
这很有效,我正在使用错误的字段进行JOIN(以防有人帮助某人,有一天,我发布了答案):
=TEXT(your_calc_formula,"hh:mm:ss")