Как остановить повторяющиеся строки при объединении таблицы в SQL? - PullRequest
0 голосов
/ 02 января 2019

Попытка присоединиться к этой таблице, чтобы я мог изменить код, если идентификатор преподавателя совпадает с идентификатором преподавателя сеанса.Но он показывает несколько результатов в календаре, который он генерирует.

Ниже приведен текущий код PHP, хотя записи дублируются из-за наличия нескольких ID преподавателя в таблице.я не уверен, как это изменить.

<?php
    $sqlAssignments = "SELECT * FROM tbl_assignments LEFT JOIN tbl_tutorModules ON tbl_assignments.module_code = tbl_tutorModules.module_code"; // 
    $qryAssignments = mysqli_query($con, $sqlAssignments); // running the query

    while($rowAssignment = mysqli_fetch_assoc($qryAssignments)){
        if ($_SESSION["ID"] == $rowAssignment['tutor_id']) {
            echo "{ title: '" . $rowAssignment['assignment_name'] . "', start: '" . $rowAssignment['hand_in_date'] . "', end: '" . $rowAssignment['hand_in_date'] . "', url: 'view/assignments.php?id=" . $rowAssignment['assignment_id'] . "', color: '#f1f1f1'},";
        } else {
            echo "{ title: '" . $rowAssignment['assignment_name'] . "', start: '" . $rowAssignment['hand_in_date'] . "', end: '" . $rowAssignment['hand_in_date'] . "', url: 'view/assignments.php?id=" . $rowAssignment['assignment_id'] . "'},";

        }
    }
?>

Фактические результаты на данный момент таковы, что когда tutorModules имеет несколько репетиторов, вывод дублирует результаты календаря.

Спасибо

Редактировать: таблицы выглядят следующим образом с некоторыми примерами данных

tbl_tutorModules

con_id   module_code   tutor_id
2        ISYS30025     1
3        ISYS30025     2

tbl_assignments

assignment_id
module_code
assignment_name
assignment_weight
set_date
hand_in_date
hand_in_method
assignment_type

Это текущий вывод

Ожидается, что они не будут дублироваться.

1 Ответ

0 голосов
/ 02 января 2019

Вы хотите знать, участвует ли определенный наставник в назначении.Поэтому передайте идентификатор преподавателя в СУБД, чтобы он мог это выяснить в запросе.

SELECT
  assignment_id, assignment_name, hand_in_date,
  case when module_code in (SELECT module_code FROM tbl_tutorModules WHERE tutor_id = ?)
    then 'yes' else 'no'
  end as tutor_involved
FROM tbl_assignments
ORDER BY assignment_id;

Как видите, я не присоединяюсь к таблицам, потому что меня не интересует объединениерезультат.Я просто хочу посмотреть запись в tbl_tutorModules.Мы используем IN или EXISTS в SQL для поиска записей в другой таблице.

Смотрите здесь, как передать параметры в СУБД в mysqli: http://php.net/manual/en/mysqli.prepare.php

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...