0

好的,我有一个表,其中包含一组用户定义的规则,可以对项目进行分类

class_id    team_category   league_category    mascot_category
1          NULL            AA                 BIRD
2          WINNER          AAA                NULL

然后我有一个这样的团队列表:

team_id    team_category   league_category    mascot_category
9          LOSER           AA                 BIRD
10         WINNER          AAA                CAT
11         NULL            A                  BIRD

我需要的是某种类型的 SQL 命令,它可以将两者结合起来,告诉我哪些团队在哪个班级。

我不知道如何正确加入表格,所以我得到了类似的东西

 team_id   class_id 
 9         1 
 10        2

我提前感谢任何帮助。

另请注意,我实际上使用的是有限的 SQL 命令集(cloudera impala),所以越简单越好。

4

1 回答 1

0

您可以加入多个条件,所以这样的事情对您有用:

SELECT teams.team_id, rules.class_id
FROM teams
INNER JOIN rules
  ON (teams.team_category = rules.team_category OR rules.team_category IS NULL)
    AND (teams.league_category = rules.league_category OR rules.league_category IS NULL)
    AND (teams.mascot_category = rules.mascot_category OR rules.mascot_category IS NULL)

这提供了您正在寻找的输出。SQL Fiddle 在这里

于 2014-03-12T17:29:22.047 回答