MySQL-通过匹配引用从多个表中获取数据
我尝试使用联接查询从不同的表中获取数据。但即使有数据,它也没有返回任何结果 学生主表包含有关学生的详细信息。学生的卷号是此表中的主键。将卷号添加到所有结果表中(即第一项结果、第二项结果等),以供参考 所以,为了获取学生的详细信息,他的第一学期和第二学期的结果,我使用了下面的查询,它没有给出预期的结果。我正在试图获取与卷号匹配的详细信息MySQL-通过匹配引用从多个表中获取数据,mysql,database,join,phpmyadmin,relationship,Mysql,Database,Join,Phpmyadmin,Relationship,我尝试使用联接查询从不同的表中获取数据。但即使有数据,它也没有返回任何结果 学生主表包含有关学生的详细信息。学生的卷号是此表中的主键。将卷号添加到所有结果表中(即第一项结果、第二项结果等),以供参考 所以,为了获取学生的详细信息,他的第一学期和第二学期的结果,我使用了下面的查询,它没有给出预期的结果。我正在试图获取与卷号匹配的详细信息 SELECT a.*, b .*,c.* FROM student_master AS a INNER JOIN first_term_results AS b
SELECT a.*, b .*,c.*
FROM student_master AS a
INNER JOIN first_term_results AS b
INNER JOIN second_term_results AS c
ON a.roll_no = b.roll_no = c.roll_no
WHERE a.roll_no = '53'
AND b.roll_no='53'
AND c.roll_no = '53'
有人能帮我更正这个查询以得到我期望的结果吗?如果我不清楚,也请告诉我。我可以解释
提前感谢。将您的查询修改为
SELECT a.*, b.*,c.*
FROM student_master AS a
INNER JOIN first_term_results AS b ON a.roll_no = b.roll_no
INNER JOIN second_term_results AS c ON a.roll_no = c.roll_no
WHERE a.roll_no = '53'
这应该符合你的愿望:
SELECT a.*, b .*,c.*
FROM student_master AS a
LEFT JOIN first_term_results AS b ON(a.roll_no = b.roll_no)
LEFT JOIN second_term_results AS c ON( a.roll_no = c.roll_no)
WHERE a.roll_no = '53'
您是否检查了驱动程序是否返回了错误?将查询格式化为可读内容后,我得到了以下信息
SELECT a.*, b .*,c.*
FROM student_master AS a
INNER JOIN first_term_results AS b
INNER JOIN second_term_results AS c ON a.roll_no = b.roll_no = c.roll_no
WHERE a.roll_no = '53'
AND b.roll_no='53'
AND c.roll_no = '53'
我觉得有点奇怪,
我喜欢这样的东西
SELECT a.*, b .*,c.*
FROM student_master AS a
INNER JOIN first_term_results AS b on a.roll_no = b.roll_no
INNER JOIN second_term_results AS c ON a.roll_no = c.roll_no
WHERE a.roll_no = '53'
以上所有答案都很有效。谢谢大家。这个答案有点不同,因为如果第二个学期结果表中没有条目,你也会得到一个结果。所以你也会得到他们没有写第二学期的学生的成绩。#@BigB(第一学期成绩相同)。看到区别了吗?存在左连接而不是内部连接。我不知道你到底想不想。你必须决定我还没试着离开加入。我现在就试试。但这有什么不同。我可以看到roll_没有重复的字段。我怎样才能限制为一个呢?所有3个表都有roll_no字段,因此如果您写入a.*、b.*、c.*,那么这个字段当然会重复3次。如果您不想这样做,那么您必须编写字段名来代替*示例:a.field1、a.field2、a.roll\u no、b.field3、c.field3等等。。。