【问题标题】:i have a problem with selecting null fk column in sql and return them to my mvc project我在 sql 中选择 null fk 列并将它们返回到我的 mvc 项目时遇到问题
【发布时间】:2021-09-29 19:18:09
【问题描述】:

我有一张桌子“课程”

CourseID WeekDayID1 WeekdayID2
1 2 4
1 2 NULL

还有一个包含工作日标题的表“tblSiteWeekDay” 我还有一个 CourseModel

public class CourseModel{
public int  CoursID { get; set; }
public string WeekDayTitle1 { get; set; }
public string WeekDayTitle2 { get; set; }
}

一些课程将在一周中的两天举行,而其他课程仅在一周中的一天举行。

我通过以下步骤选择所有课程

select 
        CourseID, 
        tsw1.WeekDayTitle as WeekDayTitle1,
        tsw2.WeekDayTitle as WeekDayTitle2
    
    from 
    Course
    inner join tblSiteWeekDay as tsw1 on Course.WeekDayID1=tsw1.SiteWeekDayID   
    inner join tblSiteWeekDay as tsw2 on Course.WeekDayID2=tsw2.SiteWeekDayID 

当我尝试在我的视图中显示课程时,IT 仅显示一周内举行 2 天的课程 一周中某一天举行的其他课程将不会显示 下面的代码是我的html视图代码

@foreach (var item in Model)
{
    <div><span>@item.WeekDayTitle1</span>
        @if (item.WeekDayTitle2!="")
        {
        <span>و @item.WeekDayTitle2 </span> 
        }
        else
        {
            <span></span>
        }

}

【问题讨论】:

    标签: sql sql-server asp.net-mvc


    【解决方案1】:

    您的数据模型很差,因为您应该将每门课程的星期几在单独的中,而不是在单独的列中。

    但是,如果您想使用已有的数据模型并显示所有课程,那么您需要left join 而不是inner join

    select c.CourseID, 
           tsw1.WeekDayTitle as WeekDayTitle1,
           tsw2.WeekDayTitle as WeekDayTitle2    
    from Course c left join
         tblSiteWeekDay tsw1 on
         on c.WeekDayID1 = tsw1.SiteWeekDayID  left join 
         tblSiteWeekDay tsw2
         on c.WeekDayID2 = tsw2.SiteWeekDayID 
    

    【讨论】:

      猜你喜欢
      • 2019-05-05
      • 1970-01-01
      • 1970-01-01
      • 2020-02-05
      • 1970-01-01
      • 2022-10-05
      • 2021-02-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多