0

我不确定标题是否与问题相关,但我没有找到更好的。这是问题所在 - 我有 4 张桌子,比方说:

产品(ID,产品名称),
价格A(产品ID,价格),价格B(
产品ID,价格),价格C(产品
ID,价格)。

我需要做的是编写一个选择,它将仅显示价格为 priceA 或 priceB 或 priceC 或 a、b、c 的任意组合的产品

我怎么能这样做?谢谢!

4

2 回答 2

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

于 2012-11-01T10:49:35.540 回答
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

于 2012-11-01T10:35:40.867 回答