У меня есть таблица (Examdata), которая содержит 7 столбцов:
(Class_ID, Subject_ID, Student_ID, Subject_name, exam_days, даты экзамена, времена экзамена)
Я хочу определить «student_id», в котором есть экзамен и еще один экзамен на следующий день, например:
| student_id | subject_name | exam_days | exam_date |
|------------|--------------|-----------|-----------|
| 1 | math | Sunday | 2/4/2019 |
| 1 | physical | Monday | 3/4/2019 |
Здесь student_id = "1" имеют два экзамена в последовательные дни, может быть, student_id больше, чем тот, для которого я хочу их обнаружить.
Примечание: если у студента есть экзамен в четверг и воскресенье, его не следует рассматривать, поскольку выходные дни между ними.
Это моя попытка:
<?php
$con = mysqli_connect("localhost", "root", "", "Exams");
$array1 = array();
$n = "SELECT DISTINCT exam_dates FROM Examdata ORDER BY exam_dates";
$queryarray1 = mysqli_query($con, $n) or die("Error in query: $queryarray1. ".mysqli_error());
while ($row = mysqli_fetch_assoc($queryarray1)) {
$array1[] = $row;
}
// print_r($array1);
/* the output for this :
Array ( [0] => Array ( [exam_dates] => 1440-04-02 ) [1] => Array ( [exam_dates] => 1440-04-03 ) [2] => Array ( [exam_dates] => 1440-04-04 ) [3] => Array ( [exam_dates] => 1440-04-05 ) [4] => Array ( [exam_dates] => 1440-04-06 ) [5] => Array ( [exam_dates] => 1440-04-08 ) [6] => Array ( [exam_dates] => 1440-04-09 ) [7] => Array ( [exam_dates] => 1440-04-10 ) [8] => Array ( [exam_dates] => 1440-04-11 ) [9] => Array ( [exam_dates] => 1440-04-12 ) [10] => Array ( [exam_dates] => 1440-04-13 ) [11] => Array ( [exam_dates] => 1440-04-15 ) [12] => Array ( [exam_dates] => 1440-04-16 ) [13] => Array ( [exam_dates] => 1440-04-17 ) [14] => Array ( [exam_dates] => 1440-04-18 ) [15] => Array ( [exam_dates] => 1440-04-20 ) )
*/
$b = json_encode($array1);
$z = sizeof($array1);
for ($i = 0; $i < $z; $i++) {
$search = "SELECT *
FROM Examdata e1
(
SELECT *
FROM examdata e2 where e1.exam_dates == $b[$i] && e2.exam_dates==$b($i++) && e1.Student_ID==e2.Student_ID && e1.exam_days!='Thursday' && e2.exam_days!='sunday'
ORDER BY `exam_dates`,`Student_ID `
)";
$querysearch = mysqli_query($con, $search) or die("Error in query: $querysearch. ".mysqli_error($con));
while ($result = mysqli_fetch_array($querysearch)) {
echo '<tr><td>' . $result['Class_ID'] .
'</td><td>' . $result['Subject_ID'] .
'</td><td>' . $result['Student_ID'] .
'</td><td>' . $result['Subject_name'].
'</td><td>' . $result['exam_days'] .
'</td><td>' . $result['exam_dates'] .
'</td><td>' . $result['exam_times'] .
'</td></tr>';
}
}
Сообщение об ошибке:
Ошибка в запросе:. У вас есть ошибка в вашем синтаксисе SQL; проверить
руководство, которое соответствует вашей версии сервера MariaDB для права
синтаксис для использования рядом с '(SELECT * from examdata e2, где e1.exam_dates == [
&& e2.exam_dates = 'в строке 2
-
но я не знаю, как передать массив в запросе.