0

我有一个简短的访问/mySQL 问题。我有一个格式如下的映射表。

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 中的值如何。

可以做这种类型的映射吗?

感谢您的帮助!

4

1 回答 1

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
于 2012-06-19T13:16:48.243 回答