2012-02-22 2 views
0

Условие «a.form» в предложении WHERE не выполняется в следующем запросе. Это независимо от формы, которая используется, например, даже если form = 1 все студенты экономики в форме 4 отображаются в результате запроса.Как использовать предложение WHERE в T-SQL

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

вы не присоединяющиеся таблиц с помощью JOIN заявления, вы выбираете все из каждой таблицы в предложении 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

Смежные вопросы