C#执行多个SQL语句并显示结果n GridView

时间:2011-11-15 01:55:04

标签: c# sql sql-server visual-studio

我正在使用VS2005和SQL Server 2005。

我正在尝试在两个sql表上执行多个sql语句,这意味着我需要对两个表进行多次检查。

这两个表是:

表1 UserID 用户名

表2 用户ID 状态

以下是我需要执行的检查,但我不知道我需要的确切SQL查询是什么。

  1. Table1 中的用户应存在于 Table2

  2. Table1 中存在的用户 Table2

  3. 中不应有STATUS=DELETE
  4. 表2中没有STATUS=DELETE的用户应存在于 Table1
  5. 我是否知道如何在SQL查询中进行此检查并在VS Sqldatasource中执行它们?

    之后将结果存储在变量中并在GridView表中显示它们。

    非常感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

所以你想要抓住3个案例:

  1. 用户存在于table1中但不存在于table2
  2. 用户在table2中标记为DELETE但仍存在于table1
  3. 用户未在表2中标记为DELETE,但在table1中不存在
  4. 下面的WHERE子句按顺序介绍了这三种情况。

    SELECT *
    FROM table1 t1
    FULL OUTER JOIN table2 t2 ON t1.userid = t2.userid
    WHERE (t2.userid IS NULL AND t1.userid IS NOT NULL)
    OR (t2.status = 'DELETE' AND t1.userid IS NOT NULL)
    OR (t2.userid IS NOT NULL AND t2.status <> 'DELETE' AND t1.userid IS NULL)
    

    编辑:为了回应OP的评论,这里是一个修改后的版本,它将根据案例#1将数据插入table3。假设table3是一个包含两列userIDproblem的表。

    INSERT INTO table3
    SELECT userID, 'No Matching Table2 Record'
    FROM table1 t1
    FULL OUTER JOIN table2 t2 ON t1.userid = t2.userid
    WHERE (t2.userid IS NULL AND t1.userid IS NOT NULL)
    

答案 1 :(得分:0)

您希望在joinUserID表1和2并排除删除状态。然后在网格视图中使用结果。

select t1.UserID, t1.Username
from Table1 t1 
     join Table2 t2 on t1.UserID = t2.UserID
where t2.Status != 'DELETE'