首页 > 解决方案 > 使用第一个表中的 2 个变量将一个表连接到另一个表并在 Select 中获取 2 个变量

问题描述

更新 考虑 2 个表。

事件表。eventID int pk status1 int status2 int

状态表 ID int pk statusName varchar

现在每个事件都有 2 个以 int 形式写入的状态。我想在屏幕上显示事件行,但要从状态表中获取相应的状态名称。因此,我必须将事件表 2 次加入状态表。使用 status1,status2 整数到状态表的 ID。

在使用实体框架时,我正在编写这样的代码

 join ds1 in db.Status on te.aStatus equals ds1.ID
 join ds2 in db.Status on te.bStatus equals ds2.ID
select new {
 Status1 = ds1.statusName,
 Status2 = ds2.statusName,
}

但是现在由于某些原因我不想使用 Entity Framework ,而不是我想直接在 SQL 中编写它,我可以通过以下方式轻松加入 2 个 dbs

    SELECT db.Status.statusName FROM db.Main INNER JOIN
 Status ON dbo.Main.aStatus = dbo.Status.ID" 

这将起作用。但我怎样才能进行第二次加入?

在 SELECT 之后,我使用这个 DataTable 对象并在循环中获取行。在那个循环中,我从该行列表创建。在那里我必须获得 2 个状态

        foreach (DataRow item in dtbProduct.Rows)
            {
                StatusList.Add(new JStatus()
                {
Status1= item["statusName"]  ???
Status2=item["statusName"]  ???

我怎样才能在这里为每个状态获得 2 个变量?

标签: sqljoin

解决方案


  $first_status = select status.statusName , events.* from status
    join events on events.status1 = status.id


    $second_status = select status.statusName, events.* from status
    join events on events.status2 = status.id

    foreach($first_status as $key =>status1){

     foreach($second_status as $k=>status2){
      if($first_status[$key]['id']== $second_status[k]['id']){
          $first_status[$key]['second_status']= $status2[$k][statusName]; 
      }
     }
    }

对不起,它可能对你有一点帮助。我只是试图用多个数据变量来做。


推荐阅读