我的问题非常具体,我无法为标题找到一个更好的名称。
我有3个表,分别是Pessoa (Person)
,Bicicleta (Bicicle)
和Viagem (Trip)
:
我想做的是按字母顺序选择出游的个人姓名,再加上Avaliacao (Evaluation)
乘以Valor_Viagem (Trip cost)
。
我尝试做的事情(无法正常工作或未完成):
select distinct PESSOA.Nome, VIAGEM.Avaliacao, VIAGEM.Id_Bicicleta, BICICLETA.Valor_Viagem from PESSOA, VIAGEM
join BICICLETA ON VIAGEM.Id_Bicicleta = BICICLETA.Id where PESSOA.Email IN (
SELECT Email_Utilizador FROM VIAGEM
);
哪个给我:
^如前所述,这不是我想要的。
答案 0 :(得分:0)
我也不是100%知道您要寻找什么,但是我假设您需要一个包含每个人的Avalacao * Valor_Viagem汇总的不同名称的列表(因此,一个5次旅行的人有5倍的Avalacao * Valor_Viagem + ... + ...)。
这很容易实现:
select PESSOA.Nome, VIAGEM.Avaliacao, VIAGEM.Id_Bicicleta, BICICLETA.Valor_Viagem from PESSOA, VIAGEM, SUM(VIAGEM.Avaliacao * BICICLETA.Valor_viagem) AS trip_cost
join BICICLETA ON VIAGEM.Id_Bicicleta = BICICLETA.Id where PESSOA.Email IN (
SELECT Email_Utilizador FROM VIAGEM
) GROUP BY PESSOA.Nome;
会发生以下情况:
警告语
这假设您将使用不同的名称。这看起来很冒险。最好为每个人分配一个唯一的ID,然后将此ID用作外键而不是名称。