asp.net - 这个SQL语句怎么写呢?

标签 asp.net sql database visual-studio-2010

我有两个表:

  1. 事件:

    -编号;姓名;启动事件;事件;人物ID;

  2. RegistracijaKorisnik:

    -编号;时间;

现在我写了这个:

SqlDataAdapter da = new SqlDataAdapter(
         "SELECT [id], [name], [eventstart], [eventend] " +
         "FROM [Event] " + 
         "WHERE NOT (([eventend] <= @start) OR ([eventstart] >= @end))",
       con);

只有显示名称、事件开始、事件结束。现在我想显示 Person 表中的名称和 event 中的名称、eventstart、eventend。在事件表中,我想将事件表中的 PersonID 连接到 Person 表中的 ID 字段。你能帮帮我吗?

编辑:所有代码,不知道为什么不显示 p.ime

protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            DayPilotCalendar1.StartDate = DayPilot.Utils.Week.FirstDayOfWeek(new DateTime(2012, 09, 17));
            DayPilotCalendar1.DataSource = dbGetEvents(DayPilotCalendar1.StartDate, DayPilotCalendar1.Days);
            DataBind();
        }

    }


 protected DataTable dbGetEvents(DateTime start, int days)
    {

      SqlConnection con = new SqlConnection();
      con.ConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=Korisnik;Integrated Security=True";
      //SqlDataAdapter da = new SqlDataAdapter("SELECT [id], [name], [eventstart], [eventend] FROM [Event] WHERE NOT (([eventend] <= @start) OR ([eventstart] >= @end))", con);
     //SqlDataAdapter da = new SqlDataAdapter("select  e.id as EventId, e.name as EventName, e.eventstart, e.eventend, p.Id as PersonId, p.ime as PersonName from Event e inner join RegistracijaKorisnik p on e.PersonID=p.id where not (([eventend] <= @start) OR ([eventstart] >= @end))", con);
      //SqlDataAdapter da = new SqlDataAdapter("SELECT e.id, e.name, e.eventstart, e.eventend, p.ime FROM Event e INNER JOIN RegistracijaKorisnik p ON e.PersonID = p.id WHERE NOT ((e.eventend <= @start) OR (e.eventstart >= @end ))", con);
      SqlDataAdapter da = new SqlDataAdapter("SELECT e.id, e.name, e.eventstart, e.eventend, p.ime AS 'Person Name' FROM Event e INNER JOIN RegistracijaKorisnik p ON e.PersonID = p.id WHERE NOT ((e.eventend <= @start) OR (e.eventstart >= @end ))", con);
      da.SelectCommand.Parameters.AddWithValue("start", start);
      da.SelectCommand.Parameters.AddWithValue("end", start.AddDays(days));

      DataTable dt = new DataTable();
      da.Fill(dt);
      return dt; 


    }

最佳答案

select 
  e.id as EventId
  ,e.name as EventName
  ,e.startevent
  ,e.endevent
  ,p.Id as PersonId
  ,p.name as PersonName 
  ,p.surname as PersonSurname
  ,p.email
from Event e
join Person p on e.PersonId=p.Id
where not (([eventend] <= @start) OR ([eventstart] >= @end))

关于asp.net - 这个SQL语句怎么写呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12461009/

相关文章:

mysql - 复杂的 SQL 表关系?

asp.net - 不显眼的 Javascript 富文本编辑器?

asp.net - 使用 ASP.NET 4.0 和 IIS7 进行 HTTP 压缩

c# - 在单个查询中将数据插入多个表

java - 如何在java应用程序和数据库之间建立安全连接?

sql - 在 SQL Server 中使用 MD5 哈希作为主键与使用 int 标识作为主键的优缺点

c# - 通过 LinkBut​​ton 下载的 .msi 上的 "The HTTP verb used to access this page is not allowed"

c# - 有没有一种方法可以使用以 C# 作为后端的 ASP.NET 来获取域中所有用户的列表?

sql - 避免 Windows Azure 中的主键重复

mysql - 从sqlite语法到mysql语法