Запрос в БД (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.
Я пытался делать несколькими запросами, например первый из них:
Но не мог даже получить id_discipline из таблицы tests.
Если есть возможность покажите пример с вложенными запросами как правильно это сделать, или с приёмами LEFT JOIN/RIGHT JOIN. Хотелось бы разобраться.
Спасибо
$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";
Решение задачи: «Запрос в БД (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.
Список действий, которые выполняются в данном коде:
- Выполняется запрос к базе данных.
- Выбираются данные из таблицы tests_questions.
- Выбираются данные из таблицы tests.
- Выбираются данные из таблицы materials_rule.
- Совмещаются данные из таблиц tests_questions и tests по полю id_test.
- Совмещаются данные из таблиц tests и materials_rule по полю id_discipline.
- Выводятся данные из полей 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. Значения переменных указывают на конкретные поля в таблицах базы данных, с которыми выполняются определенные действия.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д