Oracle右边连接3个表,但只需要匹配1个

时间:2012-11-01 10:31:25

标签: database oracle plsql

我不确定标题是否与问题相关,但我没有找到更好的标题。 这是问题 - 我有4个表,让我们说:

产品(id,product_name),
priceA(product_id,price),
priceB(product_id,price),
priceC(product_id,price)。

我需要做的是写一个选项,它只显示价格中的产品A或价格B或价格C或者a,b,c的任意组合

我怎么能这样做?谢谢!

2 个答案:

答案 0 :(得分:3)

您可以尝试使用UNION来合并结果:

select p.id,
   p.name,
   a.price
FROM products p INNER JOIN pricea a ON p.id = a.product_id
UNION
select p.id,
   p.name,
   b.price
FROM products p INNER JOIN priceb b ON p.id = b.product_id
UNION
select p.id,
   p.name,
   c.price
FROM products p INNER JOIN pricec c ON p.id = c.product_id

参见SQLFiddle:http://sqlfiddle.com/#!4/85519/15

答案 1 :(得分:2)

你有没有试过这样的事情:

select p.id,
  p.name,
  a.price Price_A,
  b.price Price_B,
  c.price Price_C
from products p
left join pricea a
  on p.id = a.product_id
left join priceb b
  on p.id = b.product_id
left join pricec c
  on p.id = c.product_id
where a.price is not null
  or b.price is not null
  or c.price is not null

请参阅SQL Fiddle with Demo