在单个查询中联接两个表。需要查询执行我的PHP代码

时间:2019-03-01 11:18:18

标签: php mysql sql

我有2个表,分别称为结果主题

result table

subject table

我想显示这样的数据

click here

我有以下代码:

$result_hallticket= "13d01a0589";
$subject_department= "Civil";

如果我搜索任何门厅和部门,则每次使用select语句都会显示主题名称和最高分数

select * 
from subject 
where subject_department='$subject_department' 
  AND subject_semester="1-1";

因此,我希望所有科目名称都应来自内部,并且外部和外部标记均来自结果数据库,且与Hallticket和学期相匹配。如果找到匹配项,则显示数字

subject_name=result_subject

如果未找到任何结果,则内部和外部标记均仅显示0个标记。

我需要一个查询来显示所有这些信息。

我真正需要的是: 我需要一个带有4列的表格(主题名称,最大分数,内部分数,外部分数)

主题名称和最高分数来自 subject 表,内部分数和外部分数来自 result 表。

主题名称和最高分取决于部门和学期。内部标记和外部标记将取决于礼堂,学期和科目。

3 个答案:

答案 0 :(得分:0)

我的理解是,如果表中有对应的记录,则要显示标记;否则,则要显示零。

您可能会查看LEFT OUTER JOIN(并了解它和INNER JOIN之间的区别),然后使用IFNULL()将null合并为零。

答案 1 :(得分:0)

您需要左联接:

select 
  s.subject_name "SUBJECT NAME", 
  s.subject_maxmarks "MAX MARKS",
  ifnull(r.result_internalmarks, 0) "INTERNAL MARKS",
  ifnull(r.result_externalmarks, 0) "EXTERNAL MARKS"
from subject s left join results r
on r.result_subject = s.subject_name
where 
  s.subject_department='$subject_department' 
  and
  s.subject_semester="1-1";

答案 2 :(得分:0)

希望此帮助

    SELECT result.result_internalmarks,result.result_externalmarks
    FROM result INNER JOIN subject ON
    result.result_subject = subject.subject_name WHERE
    result.result_hallticket = '$result_hallticket' AND 
    result.result_department = '$subject_department'