我有一个我正在尝试加入的销售表,产品表和类别表。我希望products表中的所有行都与categories表中的行匹配。然后我想加入sales表,但我只想要sales表中与products表匹配的行。这就是我的sql的样子:
create table productsandcat as
select p.p_id, p.p_name, p.p_price, c.c_name, s.s_price, s.quantity
from products p
join categories c on p.cid = c.c_id
left outer join sales s on s.pid = p.p_id
但它没有按预期工作。这将返回sales表中的所有行,但我只想要与products和categories表匹配的行。
例如:
Products table:
p_id p_name p_price cid
1 a 1 0
2 b 1 1
3 c 1 2
Categories table:
c_id c_name
0 a1
1 a2
2 a3
sales table:
pid quantity
1 1
4 1
5 2
productsandcat table:
p_id p_name p_price c_name s_price quantity
1 a 1 a1 1 1
2 b 1 a2 0 0
3 c 1 a3 0 0
答案 0 :(得分:0)
你需要在你的左外连接上有一个AND,它具有类别表的条件。
select p.p_id, p.p_name, p.p_price, c.c_name, s.s_price, s.quantity
from products p
join categories c on p.cid = c.c_id
left outer join sales s on s.pid = p.p_id and s.cid = c.c_id
如果您没有销售类别
,请不要使用左外连接select p.p_id, p.p_name, p.p_price, c.c_name, s.s_price, s.quantity
from products p
join categories c on p.cid = c.c_id
join sales s on s.pid = p.p_id