更新 考虑2个表。
事件表。 eventID int pk status1 int status2 int
状态表ID int pk statusName varchar
现在每个事件都有2个以int形式写入的状态。 我想在屏幕上显示事件行,但要从状态表中获取相应的状态名称。因此,我必须将事件表2次连接到状态表。使用status1,status2 int表示状态表的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分贝 通过
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个变量?
答案 0 :(得分:0)
$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];
}
}
}
对不起,可能会对您有所帮助。我只是尝试使用多个数据变量来实现。
答案 1 :(得分:0)
您在下面找到了什么
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