2015-09-03 37 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') 

另外,學習使用表別名。他們使查詢更容易編寫和閱讀。