2014-03-12 69 views
0

好了,所以,我有了一組項進行分類,像這樣如何申請在SQL表中定義其他表的規則

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),所以越簡單越好。

回答

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 here