Соединить 2 таблицы с разными предложениями where - PullRequest
0 голосов
/ 12 мая 2018

В моей базе данных 2 таблицы

1. admin_store_exam Колонны имя_экзамена , A_QNum , math_ques, math_a, math_b, math_c, math_d, A_Ans

2. student_ans_history Колонны имя_экзамена , S_ID , S_QNum , S_Ans , S_Noans

Теперь я хочу объединить эти 2 таблицы в столбце exam_name с другим предложением WHERE.

Вот два разных запроса с предложением 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, поэтому не мог понять, где я сделал ошибку. Может ли кто-нибудь помочь мне выйти из этой проблемы. Спасибо ..

Ответы [ 2 ]

0 голосов
/ 12 мая 2018

Вы можете присоединиться к нему, как:

$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";

Надеюсь, это работает !!!

0 голосов
/ 12 мая 2018

Вы можете использовать подзапросы.Рассмотрим следующий пример:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...