Неизвестный столбец в предложении on с использованием псевдонимов

#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 дело.