0
I’m starting with sql and I’m trying to get the sum of all books of each user in the cart table, but I’m not getting.
drop table if exists carrinho_de_compras;
drop table if exists usuario;
drop table if exists livro;
create table if not exists livro (
id_livro bigint not null,
nome varchar(20) not null,
preco double not null,
constraint pk_ID_Livro primary key(id_livro)
);
create table if not exists usuario (
id_user smallint not null,
nome varchar(40) not null,
constraint pk_ID_User primary key(id_user)
);
create table if not exists carrinho_de_compras (
id_user smallint not null,
id_livro bigint not null,
constraint fk_ID_User foreign key(id_user) references usuario(id_user),
constraint fk_ID_Livro foreign key(id_livro) references livro(id_livro)
);
-- Insere os livros
insert into livro (id_livro, nome, preco) values
(1, 'Chapeuzinho Vermelho', 4.20),
(2, 'Os tres Porquinhos', 3.00),
(3, 'Branca de Neve', 3.50);
-- Criaos usuarios
insert into usuario (id_user, nome)
values (1, 'Joao da Silva'), (2, 'Pedro Pereira');
-- Adiciona no carrinho de compras
insert into carrinho_de_compras (id_user, id_livro)
values (1, 1), (1, 2), (2, 2);
select usuario.nome, sum(livro.preco) from usuario, livro
inner join carrinho_de_compras as c on c.id_user = usuario.id_user
and c.id_livro = livro.id_livro;
It returns the following error:
12:31:15 select usuario.nome, sum(livro.preco) from usuario, livro Inner Join carrinho_de_compras as c on c.id_user = usuario.id_user and c.id_livro = livro.id_livro LIMIT 0, 1000 Error Code: 1054. Unknown column 'usuario.id_user' in 'on clause' 0.000 sec
It is only returning the first user. you came to test ?
– user122974
@user122974, you’re right, grouping the results solves the problem. Amended answer.
– rLinhares