Как получить результаты запроса с автоматическими псевдонимами таблиц в MySQL? - PullRequest
1 голос
/ 07 марта 2019

MySQL ver 10 (MariaDB).PHP 5.6.3 libmysql 5.1.73

Я давно работал с Oracle, но я смутно помню, что Oracle сделал именно то, что я ожидаю в этом примере.Я могу ошибаться или, может быть, MySQL просто не делает то же самое ... Пример создан для этого вопроса, поэтому, если вы видите проблему с синтаксисом, это связано с этим.

Предполагая простую схему, подобную этой:

Table COUNTRY
ID
NM

Table PROVINCE
ID
NM
CTID

Я надеялся, что этот запрос:

SELECT * FROM PROVINCE P JOIN COUNTRY C ON C.ID = P.CTID

даст следующий вывод:

P.ID | P.NM | P.CTID | C.ID | C.NM

К сожалению, выходные данные не содержат псевдонимов таблиц, а столбцы из объединенной таблицы, которые находятся в выбранной таблице, отсутствуют в результатах (только один столбец идентификатора в результатах).Вот так:

ID | NM | CTID

Есть ли способ получить алиасный вывод, показанный выше?Или есть какой-то другой способ получить все пять столбцов в результатах без , когда в запросе явно используется что-то вроде P.ID as P_ID?

1 Ответ

0 голосов
/ 07 марта 2019

MySQL не создает подобные псевдонимы.Если вы не указали псевдонимы явным образом, в результате вы получите повторяющиеся имена столбцов, если список выбора включает столбцы с одинаковыми именами в нескольких таблицах.

Не обязательно создавать псевдонимы для все столбцы, только те, которые вам нужны для дифференциации.

Вам не нужно отказываться от подстановочного знака, но вы должны ограничить подстановочный знак конкретными таблицами, для которых вы не делаетенужно сделать псевдонимы.

SELECT C.*, P.ID AS P_ID, P.NM AS P_NM
FROM PROVINCE P JOIN COUNTRY C ON C.ID = P.CTID
...