2016-04-21 4 views
0

Можете ли вы помочь мне с запросом, который будет отображать таблицу, как это:Каким будет запрос для следующей таблицы образцов?

 
Dept_ID    Dept_Name 

10      Admin 
10      Whalen 
20      Sales 
20      James 
20      King 
20      Smith 
40      Marketing 
40      Neena 

и так далее ... Схема является HR

Показать Департамент Id и название отдела, а затем последующие сотрудники Фамилии, работающие под этим департаментом

+0

Почему профсоюз-все? это только запрос select –

+3

, либо это очень простой запрос, и вы должны просто прочитать учебное пособие, или это сложнее, чем кажется, и вы должны описать схему своей базы данных и то, что вы пробовали в качестве запроса, если хотите получить помощь. – polku

+0

Короткий ответ: «Не делай». Вы хотите, чтобы в столбце 'dept_name' хранилось имя отдела и фамилии сотрудника? Это принципиально нарушенный дизайн. У вас должен быть хотя бы один столбец, называемый «тип», который объясняет, что описывает эта строка (отдел или сотрудник). Но даже лучшие имена отделов должны быть в разных столбцах для имен сотрудников. Если это касается форматирования результатов для отображения, отформатируйте их в своем приложении ... – MatBailie

ответ

0

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

Получите ваш заказ должен использовать ORDER BY.

Использовать ORDER BY, тогда вы должны иметь поля для этого заказа.

В вашем случае, псевдо-код будет ...
- ORDER BY [dept_id], [depts-then-employees], [dept_name]

Середина этих трех является то, что вы будете иметь, чтобы создать.

Один из способов сделать это следующим образом.

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

SELECT 
    dept_id, 
    dept_name 
FROM 
(
    SELECT 
     d.dept_id, 
     d.dept_name, 
     0 AS entity_type_ordinal 
    FROM 
     department d 

    UNION ALL 

    SELECT 
     d.dept_id, 
     e.employee_name, 
     1 AS entity_type_ordinal 
    FROM 
     department d 
    INNER JOIN 
     employee  e 
      ON e.dept_id = d.dept_id 
) 
    dept_and_emp 
ORDER BY 
    dept_id, 
    entity_type_ordinal, 
    dept_name 
+0

Thankyou so much Mat! Я получил это в тесте, и у меня не было абсолютно никакого намека, и я с тех пор терзаю свой мозг:/ Это что-то, что приходит с опытом или было прямолинейным, и я просто не понимаю его? Это код низкого уровня? –

+0

@AsimKhan - Если какой-либо из ответов здесь помог, пожалуйста, проголосуйте за них и/или отметьте их как принятые ответы :) Что касается того, насколько низкоуровневый или сложный, самая сложная часть понимает, что в SQL это *** никогда *** неотъемлемый порядок данных, вам нужно использовать 'ORDER BY', и поэтому вам нужно иметь * что-то * для выполнения заказа. Я бы сказал, что это простой и средний уровень сложности. – MatBailie

1
SELECT Dept_ID, Dept_Name 
FROM Your_Table 

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

Из вашего редактирования вам может понадобиться нечто подобное;

SELECT DT.Dept_ID, DT.Dept_Name, ET.Emp_Name 
FROM Dept_Table AS DT INNER JOIN Emp_Table AS ET ON DT.Dept_ID = ET.Dept_ID 
ORDER BY Dept_ID 

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

+0

Не так просто плюс, что не дает требуемого результата ... –

+0

Я ожидал столько же Asim, пожалуйста, отредактируйте свое сообщение более подробно, как я описал в своем ответе, и я отредактирую его соответствующим образом. – William

+2

@AsimKhan - Для тех, у кого есть * любая * надежда помочь вам, вам нужно предоставить дополнительную информацию. 'не выводит требуемый результат', крайне бесполезен, если вы не объясните, какой результат вы получили, и каким образом это было не то, что вы ожидали/требовали. Что касается вашего вопроса; вам нужно рассказать нам, какие таблицы у вас есть, как они связаны, что касается вашего желаемого результата, является важным (упорядочение, форматирование и т. д.). Вы также можете сказать: «Мне нужно выиграть», не объясняя, какую игру вы играете. – MatBailie

0

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

select 
    dept_id, dept_name 
from 
    departments 
0

Если вы хотите отобразить определенные столбцы таблицы, как вы задали в вопросе выше , вы можете использовать следующий синтаксис:

выберите COLUMN_NAMES из table_name

ре Место:

  1. COLUMN_NAMES с именами столбцов вы хотите отобразить разделенную кома 2.table_name с именем таблицы, столбцы которой вы хотите отобразить

    для выше вопроса, следующий код будет делать:

выберите dept_id, Dept_Name из Департамента;

Приведенный выше код работает, если ваше имя таблицы «» Департамента

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