Псевдоним MySQL для Subquery не работает

0

Я пишу этот код в свой MySQL-терминал, но ответы MySQL с "ERROR 1054 (42S22): Неизвестный столбец" a.SD_ID "в разделе" on ")

Я не знаю, почему он не понимает мой псевдоним.

SELECT  t.TBL_NAME              AS 'TABLE',
t.TBL_TYPE                      AS 'TYPE',
a.COLUMN_NAME                   AS 'COLUMN_NAME',
a.TYPE_NAME                     AS 'TYPE'
   FROM TBLS t
   JOIN
       (SELECT c.TYPE_NAME, c.COLUMN_NAME, c.CD_ID
           FROM COLUMNS_V2 c, SDS s
           WHERE c.CD_ID = s.CD_ID) a
   ON t.SD_ID = a.SD_ID
WHERE t.TBL_TYPE = 'MANAGED_TABLE'
ORDER BY b.TBL_NAME, b.INTEGER_IDX; 

Я запрашиваю это в MySQL на системе Ubuntu.

  • 0
    Вы забыли добавить к своему выбору s.SD_ID или c.SD_ID в подзапросе
  • 0
    Почему FROM COLUMNS_V2 c, SDS s ? Объединенные запятыми соединения стали избыточными в 1992 году. Это было еще до того, как MySQL существовал. Вместо этого используйте явные соединения ANSI ( FROM COLUMNS_V2 c JOIN SDS s ON ... ).
Показать ещё 1 комментарий
Теги:
alias

1 ответ

2
Лучший ответ

Вы должны включить столбец SD_ID внутри subquery. Проверьте прокомментированную строку ниже. Также предпочитайте соединение типа ANSI:

SELECT  
 t.TBL_NAME    AS 'TABLE',
 t.TBL_TYPE    AS 'TYPE',
 a.COLUMN_NAME AS 'COLUMN_NAME',
 a.TYPE_NAME   AS 'TYPE'
FROM TBLS t
  INNER JOIN
     (SELECT c.TYPE_NAME, c.COLUMN_NAME, c.CD_ID -- include either c.SD_ID or s.SD_ID
      FROM COLUMNS_V2 c 
      inner join SDS s
      on c.CD_ID = s.CD_ID
     ) a
   ON t.SD_ID = a.SD_ID
WHERE t.TBL_TYPE = 'MANAGED_TABLE'
ORDER BY b.TBL_NAME, b.INTEGER_IDX; 
  • 0
    Спасибо, это работает !!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню