SQL:检查一个表并将值输入另一个表

时间:2013-08-14 19:24:51

标签: sql ms-access

我有一个非常简单的MS Access用户表(USER_TABLE),包含3个字段:Customer_NumberUser_NameEmail_Address。我有另一个表(NEW_USERS),包含对用户的新请求。它的User_Status字段默认为空,并且还包含Customer_NumberUser_NameEmail_Address字段。

通过的新请求中有一半是已存在的用户,因此我想设置一个查询,检查USER_TABLE以确定是否存在新请求,使用Email_Address字段和Customer_Number字段。使这一点复杂化的事实是:1)Customer_Number不是唯一的(对于单个客户编号存在许多用户)和2)用户可以具有针对不同客户编号的多个帐户。在检查USER_TABLE时,这会导致NEW_USERS表中的4个场景:

  1. USER_TABLE(新)
  2. 中的客户编号不存在Email_Address
  3. USER_TABLE(现有)中的客户编号存在Email_Address
  4. USER_TABLE中的客户编号不存在Email_Address,但其他客户编号(新建)存在
  5. Email_TAddress确实存在于USER_TABLE中的客户编号,也存在其他客户编号(现有多个)
  6. 我想要做的是运行这些检查并在User_Status字段中输入相应的结果(New,Existing,New-Multi或Existing-Multi)。

    这似乎是可能的。是否可以运行4个单独的查询来更新NEW_USERS.User_Status?

1 个答案:

答案 0 :(得分:0)

当您在Access中工作时,您确实需要一个唯一标识每条记录的字段。至少,某些领域的组合,如customerid和电子邮件。

除此之外,由于您有一些要满足的标准,最简单的方法可能是制作一个select语句,用于比较多个select语句的结果之间的数据。查看外部联接以从一个表中选择在另一个表中找不到的结果。像 -

这样的东西
insert into user_table select customerid, email_address from 
(select customerid, email_address from new_users inner join user_table on ...) as expr1, 
(select customerid, email_address from new_users outer join user_table on ...) as expr2 
where expr1.customerid = expr2.customerid and expr1.new_users = expr2.new_users

我建议在sql上尝试免费的stanford课程,这是一个关于嵌套select语句的简单教训 - 这是获得符合许多标准的结果的好方法。 http://class2go.stanford.edu/

顺便说一下,他们使用“在where where claus中指定连接”的语法做了很多,这种语法越来越不受欢迎,但更容易理解。