2012-02-22 12 views
0

WHERE句の "a.form"条件が次のクエリで満たされていません。これは、どのフォームが使用されているかにかかわらず、たとえばform = 1であっても、フォーム4の経済学の学生はすべてクエリの結果として表示されます。T-SQLのWHERE句を使用する方法

SELECT a.Form, 
     c.AcademicYear, 
     b.SubjectName, 
     b.UserID, 
     b.Password, 
     c.* 
FROM StudentDetails.Programmes a, 
     StudentDetails.Subjects b, 
     RegistrationDetails.Registration c 
WHERE b.SubjectName = 'Economics' 
     AND b.UserID = 'user' 
     AND b.Password = 'user' 
     AND c.Term = 1 
     AND c.academicyear = '2011/2012' 
     AND a.form = 1 
     AND (core1 = 'Economics' 
       OR core2 = 'Economics' 
       OR core3 = 'Economics' 
       OR core4 = 'Economics' 
       OR elec1 = 'Economics' 
       OR elec2 = 'Economics' 
       OR elec3 = 'Economics' 
       OR elec4 = 'Economics') 
+4

、お手伝いをします。このサイトにアクセスしてください、あなたはあなたのFROM句内のすべてのテーブルからすべてを選択しています。その結果、フォームテーブル内のアイテムのみをフィルタリングし、フォームの関係に従って他のテーブルはフィルタリングしません。 – Tommy

答えて

4

次の構文を使用する必要があります。

SELECT * FROM TableA 
INNER JOIN TableB 
    ON TableA.name = TableB.name 

それはあなたのためにたくさんより明確になり、それがより良い構文です。

論理テーブルの関係はありませんか?

それは本当にあなたが文を登録しよ使用してテーブルを結合していない http://www.codinghorror.com/blog/2007/10/a-visual-explanation-of-sql-joins.html

関連する問題