Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/242.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用不同的where子句连接2个表_Php_Mysql_Pdo - Fatal编程技术网

Php 使用不同的where子句连接2个表

Php 使用不同的where子句连接2个表,php,mysql,pdo,Php,Mysql,Pdo,我的数据库中有2个表 1.管理商店\u考试 列是 考试名称,A数量,数学问题,数学A,数学b,数学c,数学d,A答案 2.学生历史 列是 考试名称、学生ID、学生数量、学生人数、学生人数 现在我想用不同的WHERE子句连接exam\u name列上的这两个表 $sql="SELECT * FROM admin_store_exam WHERE exam_name='$en'"; $sql="SELECT * FROM student_ans_history WHERE exam_name='$

我的数据库中有2个表

1.管理商店\u考试 列是 考试名称,A数量,数学问题,数学A,数学b,数学c,数学d,A答案

2.学生历史 列是 考试名称、学生ID、学生数量、学生人数、学生人数

现在我想用不同的WHERE子句连接exam\u name列上的这两个表

$sql="SELECT * FROM admin_store_exam WHERE exam_name='$en'";

$sql="SELECT * FROM student_ans_history WHERE exam_name='$en' AND S_ID='$session_contact'";
下面是带有WHERE子句的两个不同查询

$sql="SELECT * FROM admin_store_exam WHERE exam_name='$en'";

$sql="SELECT * FROM student_ans_history WHERE exam_name='$en' AND S_ID='$session_contact'";
加入这两张桌子后,我得到了这些

$sql="
SELECT admin_store_exam.A_QNum
     , admin_store_exam.math_ques
     , admin_store_exam.math_a
     , admin_store_exam.math_b
     , admin_store_exam.math_c
     , admin_store_exam.math_d
     , admin_store_exam.A_Ans
     , student_ans_history.S_Ans
     , student_ans_history.S_Noans 
  FROM admin_store_exam 
 WHERE admin_store_exam.exam_name = '$en' 
  JOIN student_ans_history 
 WHERE student_ans_history.exam_name = '$en' 
   AND S_ID = '$session_contact' 
    ON admin_store_exam.exam_name = student_ans_history.exam_name
 ";
但不幸的是,我不会得到任何结果。
我对sql不是很熟悉,因此无法理解我在哪里犯了错误。谁能帮我解决这个问题。谢谢。

您可以使用子查询。考虑下面的例子:

SELECT A.* FROM
(SELECT * FROM admin_store_exam WHERE exam_name='AB') AS A
INNER JOIN
(SELECT * FROM student_ans_history WHERE exam_name='AB' AND S_ID='23344') AS B
ON A.exam_name = B.exam_name
您可以像这样加入它:

$sql="SELECT admin_store_exam.A_QNum
 , admin_store_exam.math_ques
 , admin_store_exam.math_a
 , admin_store_exam.math_b
 , admin_store_exam.math_c
 , admin_store_exam.math_d
 , admin_store_exam.A_Ans
 , CONCAT(S_Ans,S_Noans) AS S_Ans
  FROM admin_store_exam 
 INNER 
  JOIN student_ans_history 
    ON admin_store_exam.exam_name = student_ans_history.exam_name 
        AND admin_store_exam.A_QNum = student_ans_history.S_QNum
 WHERE admin_store_exam.exam_name = '$en' 
   AND student_ans_history.S_ID = '$session_contact'
    GROUP BY admin_store_exam.exam_name, admin_store_exam.A_QNum";

希望这能奏效

请将示例数据和预期结果添加到您的问题中。您的查询有语法错误。请参考官方文档,了解使用joinsWell的正确语法,语法错误是排序结果。-看见