2012-06-19 45 views
0

我有一个很短的访问/ mySQL问题。我有以下格式的映射表。映射表MySQL/Access

ID  Category_A  Category_B  Category_C  Team 
1    a    b       T1 
2    a        d   T2 

我有第二个表,其中还包括Category_A,Category_B和Category_C。我想根据映射表将我的第二张表加入团队价值。我的问题是,当存在空白时(例如ID = 2,Category_B),映射应将T2分配给包含Category_A = a和Category_C = d的任何行,而不管Category_B中的值如何。

这种类型的映射可以完成吗?

感谢您的帮助!

+0

这似乎是可以做到的。使用'IFNULL'或'ISNULL'功能。如果你发布更多的细节,可以给出更好的解释。可能会发布第二个表结构和当前正在尝试的查询 – Imdad

回答

1

在MS Access,我想你会需要上线的东西:

SELECT t.ID, m.Team 
FROM Team t 
INNER JOIN Mapping m 
     ON (m.Category_C = t.Category_C) 
    AND (m.Category_B = t.Category_B) 
    AND (m.Category_A = t.Category_A) 
WHERE m.Category_C Is Not Null 
    AND m.Category_B Is Not Null 
    AND m.Category_A Is Not Null 

UNION ALL 
SELECT t.ID, m.Team 
FROM Team t 
INNER JOIN Mapping m 
     ON (m.Category_B = t.Category_B) 
    AND (m.Category_A = t.Category_A) 
WHERE m.Category_C Is Null 
    AND m.Category_B Is Not Null 
    AND m.Category_A Is Not Null 

UNION ALL 
SELECT t.ID, m.Team 
FROM Team t 
INNER JOIN Mapping m 
     ON (m.Category_C = t.Category_C) 
    AND (m.Category_A = t.Category_A) 
WHERE m.Category_C Is Not Null 
    AND m.Category_B Is Null 
    AND m.Category_A Is Not Null 

UNION ALL 
SELECT t.ID, m.Team 
FROM Team t 
INNER JOIN Mapping m 
     ON (m.Category_C = t.Category_C) 
    AND (m.Category_B = t.Category_B) 
WHERE m.Category_C Is Not Null 
    AND m.Category_B Is Not Null 
    AND m.Category_A Is Null