2016-08-01 7 views
0

私はコース(CID、CName)のためのテーブルを持っており、別のテーブルは各コースCourseMajor(CID、MNom)のメジャーを示しています。JOIN SQLが正常に動作しない

メジャー番号を持つドロップ・ドーン・リストがあります。ユーザがリストからメジャー番号を選択する場合、選択されたメジャーからのコースの別のリストを記入する必要があります。

私はすべてのコースを以下のコードで表示していますが、選択したメジャー番号のコースだけでなく、 私は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]) 
); 
+1

選択したメジャー番号のコースだけを表示したい場合は、「INNER JOIN」を使用します。それがうまくいかない場合は、データベーススキーマ( 'TBCourse'が' TbCourseMajor'にどのように関係するか)を教え、サンプルデータを提供し、特定のメジャー番号を選択したときに何を得ているか教えてください。 –

+0

ユーザーがメジャーを変更するたびに、そのメジャーのコースのリストを取得するためにSQLに再クエリする必要があります。しかし、1つのコースは複数の専攻科目に含めることができるため、それらの間に参照表がなければならないと考えています。 –

+0

devlin carnageリプレイに感謝します。 INNER JOINは実行後に0行を与えます。上記のテーブルの詳細を書きます。 – AL3MS

答えて

0

デブリンの大虐殺はで言ったように問題でしたデータベース(格納されたデータ)、2番目のテーブルには問題があります(データを格納していません)。これはヌルです。同じデータを持つ別のテーブルを作成したところ、完全に動作します..ありがとうございました。始まり。

関連する問題