PHP - 从两个表中选择时获得错误的结果

时间:2015-03-11 13:31:24

标签: php mysql

选择组合框时,我一直试图获得一些结果 这是我的疑问:

$strSQL = "SELECT * FROM studentresult,student where studentresult.studentid=student.id and student.class='$classes' and term='$term'and studentresult.studentid=student.id and year='$year' ";

此查询返回所有studentresult.id = 2,其中studentresult.id是主要的。

这是php代码:

 <td><div align="center"><?=$objResult["id"];?></div></td>
    <td><div align="center"><?=$objResult["studentid"];?></div></td>
    <td><?=$objResult["subjectid"];?></td>
    <td><?=$objResult["marks"];?></td>
    <td><div align="center"><?=$objResult["term"];?></div></td>
    <td align="right"><?=$objResult["year"];?></td>
    <td align="right"><?=$objResult["rank"];?></td>

id取自学生表而不是取自studentresult表。有人可以帮我这个。

编辑1:
id存在于两个表中

编辑2:
学生成绩:
ID | StudentID | SubjectID |商标|排名|条款|年

学生:
ID | Roll Num |类|名称|姓


提前感谢你 Bhaamb

3 个答案:

答案 0 :(得分:0)

$strSQL = "SELECT *,studentresult.id as stid FROM studentresult,student where studentresult.studentid=student.id and student.class='$classes' and term='$term'and studentresult.studentid=student.id and year='$year' ";

然后

<div align="center"><?=$objResult["stid"];?></div>

答案 1 :(得分:0)

您最好从两个表中指定列名而不是(*)列名称别名,以避免列名冲突(如果两者相同)并尝试根据需要使用Join(内部或左侧)。

例如,有些事情是这样的:

SELECT S.id AS student_id,SR.id as StudentResultId,S.class,s.year 来自studentresult AS SR INNER JOIN学生AS S. 在哪里SR.studentid = S.id和S.class =&#39; $ classes&#39;和s.term =&#39; $ term&#39;和SR.studentid = s.id和s.year =&#39; $ year&#39;

答案 2 :(得分:0)

首先,为什么在where子句中使用两次?

studentresult.studentid=student.id

请在连接具有相同列名的表时明确定义所有需要的列,例如

SELECT studentresult.id as sr_id, student.id as s_id ... FROM ...

并在您的PHP代码中更改它:

<?=$objResult["sr_id"];?>