【问题标题】:Bind to grid by selecting data from tow different tables?通过从两个不同的表中选择数据来绑定到网格?
【发布时间】:2012-02-29 09:10:33
【问题描述】:

我的数据库中有两个名为...请求和余额跟踪器的表,它们没有任何关系...但我想从两个表中选择数据并将其合并为两个网格...

请求

          EmpID   |EmpRqsts|EmpDescription|ApproverID
           1      |asdfsb  |sadbfsbdf     |1
           2      |asbfd   |sjkfbsd       |1

余额追踪器

          EmpId|BalanceAmnt|LastUpdated
         | 1   |5000       |sdfbk
         | 2   |3000       |sjbfsh

员工表

      EmpId|EmpName
       1   |Anil
       2   |Raghu

现在余额跟踪器有 EmployeeTable 的 ForeignKey 列...我想要的是从 [Requests] 中的 EmpTable [EmpRqsts] 和 [BalanceAmnt][LastUpdated] 中选择 [EmpName] 从 [Balance Tracker] 并将其绑定到网格

这是我用来检索数据的存储过程

create procedure SP_GetEmployeeRequests
    (@ApproverName varchar (50))
as
begin
    select 
         EmployeeDetails.Emp_Username,
         RequestDetails.Request_Amount,
         RequestDetails.Request_description,
         BalanceTracker.Balance_Amount,
         BalanceTracker.LastApproval,
         BalanceTracker.LastUdated
     from 
         EmployeeDetails, RequestDetails, BalanceTracker
     where 
         EmployeeDetails.Emp_ID = RequestDetails.Emp_ID
         and BalanceTracker.Emp_ID = RequestDetails.Emp_ID
         and RequestDetails.Approved_ID = (select Approved_ID 
                                           from ApprovalDetails  
                                           where Approved_By = @ApproverName)
end

到这里为止一切都很好,但是这个查询只检索列名。但不是表的值..任何人都可以帮助我在我的查询中有什么问题..

【问题讨论】:

  • 为什么 Requests 没有 EmpId?它存储的是名称而不是 FK。两者都可以通过名称连接吗?
  • 没有 Empname In 请求表是由员工通过文本框手动插入的..
  • 没有 Empname In 请求表是由员工通过文本框手动插入的..
  • 那么 Employee 表是如何需要的,因为您要从其他表中获取所有信息?您想在 Requests 和 Balance Tracker 之间进行交叉连接,因为它们彼此不相关?
  • 请看我有其他表关联到员工表....现在他的登录上有一个批准者,基于数据应该绑定到网格...如果 ID=1 的批准者登录附加到他的 ID 的请求应该绑定到网格

标签: asp.net sql-server-2008 c#-4.0


【解决方案1】:

我解决了我的答案,感谢所有试图帮助我的人......我正在发布我的答案,以便它可以帮助任何有需要的人......

 CREATE procedure SP_GetEmployeeRequests
(
     @ApproverName varchar (50)
)
AS
BEGIN

SELECT PTS_Employee.Emp_Username, PTS_Requests.Request_RequestedAmount, PTS_Requests.Request_Description, PTS_BalanceTracker.Balance_BalanceAmount, PTS_BalanceTracker.Balance_LastApproval, PTS_BalanceTracker.Balance_LastUpdated
FROM PTS_Employee  JOIN PTS_Requests  ON PTS_Employee.Emp_ID = PTS_Requests.Emp_ID 
JOIN PTS_BalanceTracker  ON PTS_BalanceTracker.Emp_ID = PTS_Requests.Emp_ID
JOIN PTS_Approval  ON PTS_Approval.Approval_ApprovedID  = PTS_Requests.Approval_ApprovedID
WHERE PTS_Approval.Approval_ApprovedBY = @ApproverName 

END
GO

【讨论】:

    【解决方案2】:

    试试这个:

    SqlDataAdapter da = new SqlDataAdapter("select t1.EmpName,t2.EmpRqsts,t3.BalanceAmnt,t3.LastUpdated from EmpTable as t1,Requests as t2,Balance_tracker as t3 where t1.sno=t2.sno and t1.sno=t3.sno", conn);
                DataTable dt1 = new DataTable();
                da.Fill(dt1);
                GridView1.DataSource = dt1;
                GridView1.DataBind();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-03
      • 1970-01-01
      • 2012-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多