объединить одну таблицу в другую, используя 2 переменные из первой таблицы, и получить 2 переменные в Select - PullRequest
0 голосов
/ 12 октября 2018

ОБНОВЛЕНИЕ Рассмотрим 2 таблицы.

Таблица событий.eventID int pk status1 int status2 int

Идентификатор таблицы состояний int pk statusName varchar

теперь у каждого события есть 2 состояния, записанные в int.И я хочу показать строки событий на экране, но получить соответствующее имя статуса из таблицы состояния.Таким образом, я должен присоединить таблицу событий 2 раза к таблице состояния.используя status1, status2 в качестве идентификатора таблицы состояния.

При использовании структуры сущностей я писал такой код

 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 дБ

    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 переменные для каждого статуса?

Ответы [ 2 ]

0 голосов
/ 12 октября 2018

вы найдете что-то ниже

 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
0 голосов
/ 12 октября 2018
  $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]; 
      }
     }
    }

Извините, это может вам немного помочь.Я просто попытался сделать это с несколькими переменными данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...