#mysql #sql
Вопрос:
Я получаю неизвестную колонку в предложении on в
SELECT course.title AS course, prereq.title AS prereq
FROM (SELECT title FROM course) AS course
RIGHT OUTER JOIN (SELECT title FROM course) AS prereq
ON (course.course_id = prereq.course_id);
Я также попытался просто «ИСПОЛЬЗОВАТЬ (course_id)», но это дало ту же ошибку
Комментарии:
1. Вы должны добавить
course_id
в выходные списки в обоих подзапросах.2. Вы выполняете самостоятельное объединение таблицы с использованием одного столбца. Это не даст ничего интересного. Примеры данных, желаемые результаты и четкое объяснение того, чего вы хотите достичь, — все это поможет.
Ответ №1:
Формально:
SELECT course.title AS course, prereq.title AS prereq
FROM ( SELECT title, course_id
FROM course ) AS course
RIGHT OUTER JOIN ( SELECT title, course_id
FROM course ) AS prereq USING (course_id);
Ответ №2:
Пропустите подзапросы:
SELECT c.title AS course, p.title AS prereq
FROM course AS c
RIGHT OUTER JOIN course AS p
ON c.course_id = p.course_id;
Примечание. Ненужные подзапросы усложняют работу оптимизатора, что может повлиять на производительность.
Кстати, ты уверен, что хочешь быть RIGHT JOIN
здесь? Больше похоже на LEFT JOIN
дело.