Как можно объединить три SQL с двумя таблицами, имеющими одно и то же поле? - PullRequest
0 голосов
/ 28 октября 2018

У меня есть три таблицы

Student
-------------
id,
matno,
Surname,
faculty_id,
dept_id,
....

Faculty
------------
id,
name,
...

department
-------------------
id,
name,
....

Я хочу выбрать данные студента, используя matno плюс название факультета и название кафедры, используя faculty_id и dept_id.Я перепробовал все комбинации SQL JOIN, о которых только мог подумать, и получил только одно поле имени.

Также я получаю нулевое значение при втором запросе, если я пытаюсь получить запрос с использованием другого оператора.

Отредактировано

Мой SQL-запрос

SELECT * FROM student INNER JOIN faculty ON faculty.id = student.faculty_id LEFT JOIN department ON  department.id = student.dept_id WHERE student.matno = 1104

Ответы [ 2 ]

0 голосов
/ 28 октября 2018
SELECT * FROM 
STUDENT S
LEFT JOIN FACULTY F
ON S.FACULTY_ID = F.ID
LEFT JOIN DEPARTMENT D
ON S.DEPT_ID = D.ID WHERE S.MATNO = "$your_matno";

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

0 голосов
/ 28 октября 2018

Предполагая, что faculty_id и dept_id являются внешними ключами в таблицах Faculty и department, этот запрос должен дать желаемый результат (замените ??? на требуемое значение поиска matno):

SELECT s.matno, s.surname, f.name AS faculty, d.name AS department
FROM Student s
JOIN Faculty f ON f.id = s.faculty_id
JOIN department d ON d.id = s.dept_id
WHERE matno = ???
...