Database Oracle right join 3个表,但只需匹配1个

Database Oracle right join 3个表,但只需匹配1个,database,oracle,plsql,Database,Oracle,Plsql,我不确定标题是否与问题相关,但我没有找到更好的标题。 问题是,我有4张桌子,假设: 产品(id、产品名称), priceA(产品标识、价格), 价格B(产品标识、价格), 价格C(产品标识,价格) 我需要做的是写一个选择,只显示价格为a、b、c或a、b、c的产品 我怎么能这样做?谢谢大家! 您是否尝试过这样的方法: select p.id, p.name, a.price Price_A, b.price Price_B, c.price Price_C from product

我不确定标题是否与问题相关,但我没有找到更好的标题。 问题是,我有4张桌子,假设:

产品(id、产品名称),
priceA(产品标识、价格),
价格B(产品标识、价格),
价格C(产品标识,价格)

我需要做的是写一个选择,只显示价格为a、b、c或a、b、c的产品


我怎么能这样做?谢谢大家!

您是否尝试过这样的方法:

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

参见

您是否尝试过类似的方法:

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

请参见

您可以尝试使用联合来组合结果:

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:

您可以尝试使用联合来组合结果:

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:

没关系,但我只需要一行用于产品,例如2 product2 25 NULL 3没关系,但我只需要一行用于产品,例如2 product2 25 NULL 3