将其他表加入 return 个自定义结果

Join other tables to return customized result

我有以下 tables

产品table:

id product_type product_code
200 Camera 3222333
201 Television 5432322
202 PC 4332233
203 Mac 1244532
204 Notebook 7543223

product_released_country1 table:

id product_code released_year
1 3222333 2000
2 3222333 2001
3 3222333 2003
4 5432322 2000
5 5432322 2001
6 5432322 2010

product_released_country2 table:

id product_code released_year
1 4332233 2000
2 4332233 2001
3 4332233 2009
4 1244532 2000
5 1244532 2001
6 1244532 2010

在不同国家/地区发布的产品保存在 2 个不同的 table 中。我需要一个 return 所有产品的查询,方法是检查两个 table 以查看是否有任何产品已在 2010 年发布。如果该产品是在 2010 年发布的,则 return 'yes' 用于特定产品。如果产品未在 2010 年发布或在任何年份都未发布(例如:product_code 7543223),则查询应 return a 'no' is_product_released_in_2010列。

预期输出:

id product_type product_code is_product_released_in_2010
200 Camera 3222333 no
201 Television 5432322 yes
202 PC 4332233 no
203 Mac 1244532 yes
204 Notebook 7543223 no

我尝试使用 union all 加入两个 tables,但仍然没有得到想要的结果。任何帮助将不胜感激。谢谢。

LEFT JOIN 并检查是否存在

SELECT p.id, p.product_type, p.product_code, CASE WHEN MAX(c1.id) IS NOT NULL OR MAX(c2.id) IS NOT NULL THEN 'yes' ELSE 'no' END is_product_released_in_2010
FROM product p
LEFT JOIN product_released_country1 c1 ON p.product_code = c1.product_code AND c1.released_year = 2010
LEFT JOIN product_released_country2 c2 ON p.product_code = c2.product_code AND c2.released_year = 2010
GROUP BY p.id, p.product_type, p.product_code

demo

你可以用一个计数和一个联合来完成

select 
p.id, 
p.product_type, 
p.product_code ,
(select count(*) from
  (select product_code, released_year from product_released_country1
  union all
  select product_code, released_year from product_released_country2) as t
where t.product_code = p.product_code and t.released_year=2010)>0 as is_product_released_in_2010
from product p

example here