需要帮助来连接2个表中的内容

时间:2019-06-30 16:09:32

标签: sql oracle

我有2个表的植物和天气,我需要的是天气表中唯一能在一种天气中开花的植物,并且具有植物表中的相应植物名称。

请帮助我为这种情况构造sql查询。

Plants Table :
=====
plant_name; plant_species; seed_year

Marcantia1, Bryophyte, 2012

cycas1, gymnosperm, 2013

Marcantia2, Bryophyte, 2016

weather table :
======
plant_species; weather_type

Bryophyte, sunny

gymnosperm, rainy

gymnosperm, sunny

ex:在一种类型的天气中唯一开花的天气植物物种是苔藓植物,在晴朗的天气中开花,并且在植物表中有2个记录,其中植物物种是苔藓植物,即marcantia1和marcantia2。

Required output :
=====
weather_type; plant_name

sunny, marcantia1

sunny, marcantia2

2 个答案:

答案 0 :(得分:0)

SELECT
    w.weather_type,
    p.plant_name
FROM Plants p
LEFT JOIN weather w 
   ON w.plant_species = p.plant_species

我选择了LEFT JOIN,这还将包括不在天气表中的植物。

答案 1 :(得分:0)

您需要使用具有count( distinct weather_type ) = 1的Haven子句进行分组:

select max(weather_type) as weather_type, plant_name
  from plants p
  join weather w on w.plant_species = p.plant_species
 group by plant_name
having count( distinct weather_type ) = 1;

WEATHER_TYPE    PLANT_NAME
------------    -----------
sunny           Marcantia1
sunny           Marcantia2

Demo