Запрос в БД (php/MySQL)

Узнай цену своей работы

Формулировка задачи:

Здравствуйте! Имеется 3 таблицы: materials_rule - id_rule - id_discipline - id_student tests - id_test - id_discipline - name tests_questions - id_question - id_test - question У меня есть: id_question, и по нему мне нужно выбрать сначала id_discipline.tests, а затем `id_discipline` и `id_student` из materials_rule. Как это сделать одним запросом? Или более экономно? Можно код на php. Я пытался делать несколькими запросами, например первый из них:
$selDiscipline = $this->db->DQ("SELECT `id_discipline` FROM `tests` WHERE `id_test` IN (SELECT * FROM `tests_questions` WHERE `id_question` = '".$this->action[4]."')");
      $fQuestion = $this->db->DF($selDiscipline);
      echo $fQuestion['id_discipline']." - DISC";
Но не мог даже получить id_discipline из таблицы tests. Если есть возможность покажите пример с вложенными запросами как правильно это сделать, или с приёмами LEFT JOIN/RIGHT JOIN. Хотелось бы разобраться. Спасибо

Решение задачи: «Запрос в БД (php/MySQL)»

textual
Листинг программы
SELECT t3.`id_discipline`, t3.`id_student` FROM tests_questions t1 JOIN tests t2 ON t1.id_test=t2.id_test JOIN materials_rule t3 ON t2.id_discipline=t3.id_discipline;

Объяснение кода листинга программы

В представленном коде выполняется запрос к базе данных с использованием языка SQL. При этом происходит выборка данных из нескольких таблиц: tests_questions, tests и materials_rule.
Список действий, которые выполняются в данном коде:

  1. Выполняется запрос к базе данных.
  2. Выбираются данные из таблицы tests_questions.
  3. Выбираются данные из таблицы tests.
  4. Выбираются данные из таблицы materials_rule.
  5. Совмещаются данные из таблиц tests_questions и tests по полю id_test.
  6. Совмещаются данные из таблиц tests и materials_rule по полю id_discipline.
  7. Выводятся данные из полей id_discipline и id_student. При этом в запросе используются следующие переменные и их значения:
    • t1 - ссылка на таблицу tests_questions.
    • t2 - ссылка на таблицу tests.
    • t3 - ссылка на таблицу materials_rule.
    • t1.id_test - ссылка на поле id_test в таблице tests_questions.
    • t2.id_test - ссылка на поле id_test в таблице tests.
    • t3.id_discipline - ссылка на поле id_discipline в таблице materials_rule. Значения переменных, которые используются в запросе, следующие:
    • t1 - ссылка на таблицу tests_questions.
    • t2 - ссылка на таблицу tests.
    • t3 - ссылка на таблицу materials_rule.
    • t1.id_test - ссылка на поле id_test в таблице tests_questions.
    • t2.id_test - ссылка на поле id_test в таблице tests.
    • t3.id_discipline - ссылка на поле id_discipline в таблице materials_rule. Значения переменных указывают на конкретные поля в таблицах базы данных, с которыми выполняются определенные действия.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.5 из 5