2015-02-02 1 views
0

Я пытаюсь создать представление в MYSQL, но при использовании Union ALL он отображается под 1 столбцом. когда я пытаюсь добавить имена столбцов это просто говорит о том, что количество столбцов и результатов DonT соответствуютСоздание представления в mysql с объединением всех, кроме всех записей, отображается под 1 столбцом

use TestDB; 
DROP VIEW if exists auditTableView; 
Create view auditTableView 
AS 
select usernames.username from usernames LEFT JOIN auditTable on usernames.ID = auditTable.userID 
Union ALL 

select actionDesc.functionName from actionDesc LEFT JOIN auditTable on actionDesc.actionID = auditTable.actionID 
Union all 

SELECT timestamp from auditTable; 


SELECT * FROM auditTableView; 

ответ

0

С UNION, MySQL использует имена столбцов из первой SELECT заявления, а число столбцов должны совпадать.

Вы можете сделать что-то вроде этого:

SELECT table1.col1, NULL AS col2 FROM table1 
UNION ALL 
SELECT NULL AS col1, table2.col2 FROM table2 
+1

... но OP действительно должен пересмотреть структуру SQL. Потребность в этом ответе является симптомом большей проблемы с запросом. –

1

Из того, что можно почерпнуть из вашей схемы, это выглядит, как вы хотите сделать внутреннее соединение с auditTable ваших имен пользователей и actionDesc таблицы, и выберите имя пользователя, actionDesc и отметки времени оттуда:

use TestDB; 
DROP VIEW if exists auditTableView; 
Create view auditTableView 
AS 

select 
    usernames.username, 
    actionDesc.functionName, 
    auditTable.timestamp 
from auditTable 
    inner join usernames 
     on usernames.ID = auditTable.userID 
    inner join actionDesc 
     on actionDesc.actionID = auditTable.actionID; 

select * from auditTableView; 

 Смежные вопросы

  • Нет связанных вопросов^_^