2015-06-08 4 views
1

Приведенный ниже код работает до момента, когда я попытаюсь заказать его по названию.Порядок заказа по заказам

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

SELECT 
    e.emp_name 'Name', 
    e.emp_gen 'Gender', 
    ('Employee') 'Role' 
FROM employee e 
ORDER BY e.emp_name ASC 
     UNION ALL 
SELECT 
    s.sup_name 'Name', 
    s.gen 'Gender', 
    ('Supervisor') 'Role' 
FROM supervisor s 
ORDER BY s.sup_name ASC; 

EDIT

теперь попытался это, но, кажется, не работает, а

SELECT 
    e.emp_name 'Name', 
    e.emp_gen 'Gender', 
    ('Employee') 'Role' 
FROM employee e 
     UNION ALL 
SELECT 
    s.sup_name 'Name', 
    s.gen 'Gender', 
    ('Supervisor') 'Role' 
FROM supervisor s 
ORDER BY s.sup_name ASC; 
+0

возможно дубликат [Использование союза и порядок пунктом в MySQL] (http://stackoverflow.com/questions/3531251/using-union-and-order-by- clause-in-mysql) –

+1

Вам нужно «ЗАКАЗАТЬ» весь набор результатов _after_ 'UNION', qv Ссылка Робби Корнелиссена. –

+0

'СОЮЗ' - это почти всегда плохая идея ИМХО. Вам было бы намного лучше составить общую таблицу людей (используйте «сотрудник», можно предположить, что надзиратели все еще являются сотрудниками) и задание поля для определения роли. – Cfreak

ответ

0

Фигурные его.

все работало нормально, как я сказал до «заказа», я думаю, из-за того, что столбцы имен для двух таблиц были разными, поэтому я изменил порядок по инструкции для ссылки на столбец.

Я забыл, что вы можете это сделать.

также я не хотел иметь союз «все», это было то, с чем я только что играл, когда застрял.

жаль, если я путать людей с этим союзом все

SELECT 
    e.emp_name 'Name', 
    e.emp_gen 'Gender', 
    ('Employee') 'Role' 
FROM employee e 
     UNION 
SELECT 
    s.sup_name 'Name', 
    s.gen 'Gender', 
    ('Supervisor') 'Role' 
FROM supervisor s 
ORDER BY 1 ASC; 
+0

ORDER BY 'Name' ASC лучше. (Порядок по порядковой позиции устарел.) Почему() вокруг «Сотрудник» и «Супервизор»? Почему UNION вместо UNION ALL? – jarlh

0

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

SELECT EMPNAME AS COL1, DOB FROM #TABLE1 
UNION 
SELECT SUPNAME AS COL1, DOB FROM #TABLE2 
ORDER BY COL1 

Или

SELECT EMPNAME 'COL1', DOB FROM #TABLE1 
UNION 
SELECT SUPNAME 'COL1', DOB FROM #TABLE2 
ORDER BY COL1 
Смежные вопросы