Я пытаюсь написать SQL-запрос, который возвращает список номеров модулей и их заголовков для университетского курса, а также список предпосылок для этого модуля и их названий. Это означает, что результат должен выглядеть что-то похожее на:Исправить атрибут на основе FK
Module | Module Title | Prerequisite | Prerequisite Title
C1930 | Computing | C1100 | Basic Computing
C1930 | Computing | C1500 | Intermediate Computing
T1350 | Textiles | T1100 | Sewing
Типы таблиц являются следующим:
модуля (moduleNumber, MODULENAME);
Необходимое условие (moduleNumber, prerequisiteNumber);
Моя проблема заключается в разрешении prequisteNumber как moduleName. Я вижу, что, вероятно, это будет либо подзапрос, либо использование JOIN какого-то типа (INNER JOIN - это то, как я его пытался), но я не могу заставить его работать.
Мои попытки запроса следующим образом:
SELECT m.moduleNumber as "Module", m.moduleName as "Module Title", p.moduleNumber as "Prerequisite", p.prerequisiteNumber as "Prerequisite Title"
FROM Module m, Prerequisite p
WHERE p.moduleNumber = m.moduleNumber
OR p.prerequisiteNumber = m.moduleNumber
и:
SELECT m.moduleNumber as "Module", m.moduleName as "Module Title", p.moduleNumber as "Prerequisite"
FROM Module m
INNER JOIN Prerequisite s
ON m.moduleNumber = p.moduleNumber
INNER JOIN
(
SELECT m.moduleName as "Prerequisite Title"
FROM Module m, Prerequisite p
WHERE m.moduleNumber = p.moduleNumber
)
Ни одна из которых дает мне результат я хочу. Я чувствую, что первое ближе, чем второе, но я не могу продвинуться дальше ни на одном из них. Я пробовал искать, но я даже не уверен, как описать эту проблему, не говоря уже о том, где начать искать помощь.
Спасибо за ваше время.
EDIT:
Вот пример данных для модуля и Предпосылка таблицы:
Модуль
moduleNumber | moduleName
C1930 | Computing
C1100 | Basic Computing
C1500 | Intermediate Computing
T1350 | Textiles
T1100 | Sewing
Предпосылкой
moduleNumber | prerequisiteNumber
C1930 | C1100
C1930 | C1500
T1350 | T1100
Хм. Я вижу, где вы собираетесь с этим, но он выводит один и тот же набор данных дважды - я добавлю примерные данные в исходное сообщение с примерами. – Paul
Были сделаны изменения - я думаю, это должно сделать ситуацию более ясной - извините за недоразумение. – Paul
Это набор данных, которые я принимал. Я не вижу, как это дает дубликаты. Я рассмотрю. – albe