SQL 连接 3 个表,将重复的行加在一起
SQL Join 3 tables, add together duplicate rows
我在解决这个问题时遇到了一些问题。
"Choose all people and their orders, it's important that you show their name, id - the products name and the amount. If a person has made 2 orders with the same item, you want to only show 1 order, but add together the amounts from both orders."
这是我目前所知道的,但我无法理解如何让多个订单只显示为 1,并将金额加在一起:
SELECT p.navn, p.id, v.varenavn, o.antal
FROM Vare as v
INNER JOIN Ordre as o
ON v.vareid = o.v_id
INNER JOIN Person as p
ON o.p_id = p.id
这些是表格:
变化:
create table Vare(
vareid int identity(1,1) primary key,
nummer int,
varenavn nvarchar(100),
højde int,
vægt int,
pris money,
dato nvarchar(20),
datotil nvarchar(20),
)
订单:
create table Ordre(
ordreid int identity(1,1) primary key,
dato date,
tid int,
antal int,
totalpris money,
betalingsfrist date,
rabatgruppe int,
v_id int foreign key references Vare(vareid) not null,
p_id int,
)
人:
create table Person(
id int identity(1,1) primary key,
navn nvarchar(30),
vejnavn nvarchar(50),
postnr varchar(10),
bynavn nvarchar(50),
tlf int,
kategori int,
)
你可以试试。
sum
所有 antal 和 group by
订单。
SELECT p.navn, p.id, v.varenavn, SUM(o.antal)
FROM Vare as v
INNER JOIN Ordre as o
ON v.vareid = o.v_id
INNER JOIN Person as p
ON o.p_id = p.id
GROUP BY
p.navn, p.id, v.varenavn
我在解决这个问题时遇到了一些问题。
"Choose all people and their orders, it's important that you show their name, id - the products name and the amount. If a person has made 2 orders with the same item, you want to only show 1 order, but add together the amounts from both orders."
这是我目前所知道的,但我无法理解如何让多个订单只显示为 1,并将金额加在一起:
SELECT p.navn, p.id, v.varenavn, o.antal
FROM Vare as v
INNER JOIN Ordre as o
ON v.vareid = o.v_id
INNER JOIN Person as p
ON o.p_id = p.id
这些是表格:
变化:
create table Vare(
vareid int identity(1,1) primary key,
nummer int,
varenavn nvarchar(100),
højde int,
vægt int,
pris money,
dato nvarchar(20),
datotil nvarchar(20),
)
订单:
create table Ordre(
ordreid int identity(1,1) primary key,
dato date,
tid int,
antal int,
totalpris money,
betalingsfrist date,
rabatgruppe int,
v_id int foreign key references Vare(vareid) not null,
p_id int,
)
人:
create table Person(
id int identity(1,1) primary key,
navn nvarchar(30),
vejnavn nvarchar(50),
postnr varchar(10),
bynavn nvarchar(50),
tlf int,
kategori int,
)
你可以试试。
sum
所有 antal 和 group by
订单。
SELECT p.navn, p.id, v.varenavn, SUM(o.antal)
FROM Vare as v
INNER JOIN Ordre as o
ON v.vareid = o.v_id
INNER JOIN Person as p
ON o.p_id = p.id
GROUP BY
p.navn, p.id, v.varenavn