Какой другой подход я могу использовать для выбора * при внутреннем объединении нескольких таблиц? - PullRequest
0 голосов
/ 17 июня 2020
• 1000 Я хочу знать, есть ли более быстрый способ сделать это вместо того, чтобы использовать псевдоним, выбирая каждый столбец один за другим.

Ответы [ 2 ]

3 голосов
/ 17 июня 2020

DISTINCT не поможет, так как он говорит о повторяющихся столбцах и повторяющихся строках.

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

SELECT p.created_date as product_created_date, order.created_date as order_created date .....

Примечание. Использование представления не является необходимым шаблоном. Обычно достаточно выбрать именно тот результат. Производительность выборок в представлениях может снизиться, поскольку их сложнее оптимизировать для MySQL. Однако они полезны, если вам нужно явное GRANT на них для конкретного пользователя c.

0 голосов
/ 17 июня 2020

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

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

Select listagg('pd.'|| column_name, ',')
         Within group (order by column_id)
  From user_tab_columns
 Where table_name = 'your_table_name_in_capital';

Обратите внимание, что вам нужно заменить 'pd.' для каждой таблицы на псевдоним таблицы в вашем запросе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...