代码之家  ›  专栏  ›  技术社区  ›  David

使用第一个表中的2个变量将一个表连接到另一个表,并在Select中获得2个变量

  •  0
  • David  · 技术社区  · 7 年前

    更新 考虑两张桌子。

    事件表。事件ID int pk status1 int status2 int

    状态表ID int pk statusName varchar

    现在每个事件都有两个用int写的状态。

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

     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,
    }
    

    我可以轻松加入2个dbs 通过

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

    这就行了。但我怎样才能加入第二个呢?

    选择之后,我获取这个DataTable对象并在循环中获取行。在这个循环中,我从行列表中创建。 在那里我必须得到两种状态

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

    如何在这里得到每个状态的两个变量?

    2 回复  |  直到 7 年前
        1
  •  0
  •   Zaynul Abadin Tuhin    7 年前

    你在下面找到什么了吗

     SELECT ds1.statusName,ds2.statusName FROM 
     db.Main d
     join db.Status ds1   on d.aStatus = ds1.ID
     join db.Status ds2   on d.bStatus = ds2.ID
    
        2
  •  0
  •   Rey Young    7 年前
      $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]; 
          }
         }
        }
    

    对不起,这可能对你有点帮助。我只是试着用多个数据变量。