【问题标题】:JOIN SQL not working as it should beJOIN SQL 无法正常工作
【发布时间】:2016-08-01 21:37:20
【问题描述】:

我有课程表(CID,CName),另一个表显示每门课程 CourseMajor(CID,MNom)的专业。

我有一个包含专业号码的黎明名单。如果用户从列表中选择一个专业编号,则应填写另一个列表,其中包含所选专业的课程。

我有下面的代码显示所有课程,而不仅仅是所选专业号码的课程! 我使用了 LEFT JOIN、RIGHT JOIN、INNER JOIN、FULL OUTER JOIN....它们都不起作用。

注意:我使用的是 C#、asp.net、vs.net...

 using (SqlConnection con = new SqlConnection(conStr))
        {
            using (SqlCommand cmd = new SqlCommand("SELECT * FROM TBCourse FULL JOIN TbCourseMajor ON  TBCourse.CId = TbCourseMajor.CId  AND TbCourseMajor.MNom = '" + DLMNom.SelectedValue + "' ", con))
            {
                con.Open();
                cmd.ExecuteNonQuery();
                SqlDataReader reader = cmd.ExecuteReader();
                if (reader.HasRows)
                {
                    reader.Read();


                    while (reader.Read())
                    {
                     DLCName.Items.Add(new ListItem(reader["CName"].ToString(), reader["CNom"].ToString()));

                    }
                }
                else { TxtCRN.Text = "Not worked"; }
            }
        }

这是关于表格的一些细节:

CREATE TABLE [dbo].[TBCourse] (
    [CId]    INT           IDENTITY (1, 1) NOT NULL,
    [CNom]   INT           NOT NULL,
    [CName]  NVARCHAR (50) NOT NULL,
    [Chours] NCHAR (10)    NOT NULL,
    CONSTRAINT [PK_TBCourse] PRIMARY KEY CLUSTERED ([CId] ASC)
);


CREATE TABLE [dbo].[TbCourseMajor] (
    [CId]  INT NOT NULL,
    [MNom] INT NOT NULL,
    PRIMARY KEY CLUSTERED ([CId] ASC),
    FOREIGN KEY ([CId]) REFERENCES [dbo].[TBCourse] ([CId]),
    FOREIGN KEY ([MNom]) REFERENCES [dbo].[TbMajor] ([MNom])
);

【问题讨论】:

  • 如果您只想查看所选专业编号的课程,您可以使用INNER JOIN。如果这不起作用,您需要告诉我们更多关于您的数据库架构的信息(TBCourseTbCourseMajor 的关系),提供一些示例数据,并告诉我们您在选择特定主编号时会得到什么。
  • 是的。每次用户更改专业时,您都必须重新查询 SQL 以获取该专业的课程列表。但是,我认为它们之间必须有一个参考表,因为一门课程可以包含在多个专业中。
  • devlin carnage 感谢您的重播。 INNER JOIN 执行后给出 0 行我将写上有关表的详细信息。
  • 感谢 Slava Murygin 重播.. 在我的数据库中,一门课程只属于一个专业。不是因为更新它的问题是关于SQL命令的错误结果。
  • 首先,使用 MS SQL Management Studio 并以纯文本形式运行您的查询。第二 - 不要对“WHERE”使用“ON”子句(这有效,但有点误用)第三 - 去无缘无故地连接 SQL 查询,让自己感到羞耻。使用 SQLParameters!

标签: c# asp.net sql-server join


【解决方案1】:

问题是正如 devlin carnage 在数据库中所说的(在存储的数据中),第二个表有问题(不是存储数据)它显示为空..我创建了另一个具有相同数据的表,它运行良好.. 谢谢大家很抱歉未能从一开始就发现问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-02-13
    • 1970-01-01
    • 2018-02-21
    • 2015-06-29
    • 1970-01-01
    • 2016-10-28
    • 1970-01-01
    相关资源
    最近更新 更多