2015-09-03 35 views
0

我一直试图在我的SELECT中使用AND,但是出现错误。如何使用选择AND

什么可能是我应该编写代码的正确方法?

的代码是:

$sel=mysql_query("SELECT * from student, subject, studentmark 
where student.username='$name' AND studentmark.student_id='$name' AND studentmark.YEAR='$ya' AND studentmark.Term='FIRST' AND studentmark.Term='SECOND' AND studentmark.Term='THIRD' AND subject.code=studentmark.code AND student.username=studentmark.student_id"); 
+0

你得到的错误是什么? – Nerdwood

+0

studentmark.Term ='FIRST'and studentmark.Term ='SECOND'and studentmark.Term ='THIRD'。这种情况将永远不会发生,你将不会得到任何回报。此外,您需要使用JOIN而不是以下内容:student.username = studentmark.student_id – RyanB

+0

也许这些AND应该是OR。 (并且在括号内。) – jarlh

回答

0

必须使用或代替AND studentmark.Term = '第一' 和studentmark.Term = '第二个' 项的值只能有一个值

0

我不知道你想从学生那里得到什么专栏,&学生标识表&也是这些表的关系。因此,这里是我的想法:

  1. 使用或代替并于同列检查:studentmark.Term = '第一' 和studentmark.Term = '第二个' AND studentmark.Term = '第三'。这将不会返回。
  2. 使用表连接查询而不是:subject.code = studentmark.code AND student.username = studentmark.student_id,它是不正确的。看看这里:SQL Joins
1

一个简单的规则:在FROM子句中决不使用逗号。 总是使用明确的JOIN语法。结果是这样的:

SELECT * 
from studentmark sm join 
    student st 
    on sm.student_id = st.username join 
    subject join 
    on sm.code = su.code  
where st.username='$name' AND sm.YEAR = '$ya' AND 
     sm.Term in ('FIRST', 'SECOND', 'THIRD') 

另外,学习使用表别名。他们使查询更容易编写和阅读。