Я пишу этот код в свой 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.
Вы должны включить столбец 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;
FROM COLUMNS_V2 c, SDS s
? Объединенные запятыми соединения стали избыточными в 1992 году. Это было еще до того, как MySQL существовал. Вместо этого используйте явные соединения ANSI (FROM COLUMNS_V2 c JOIN SDS s ON ...
).