Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Выбрать из двух таблиц
|
|||
|---|---|---|---|
|
#18+
Добрый день! Есть две таблицы: сотрудники и отделы. В каждом отделе есть начальник, который тоже является сотрудником. Чтобы хранить информацию о начальниках отделов я создала еще одну таблицу (диаграмма в приложении). Мне нужно выбрать 10 фамилий сотрудников, названия отдела, где работает и фамилию начальника. select top (10) concat(Emp_Surname, ' '+substring(Emp_Name,1,1)+'.', substring(Emp_patronymic,1,1)+'.') as Сотрудник, Dep_title as Отдел from Employee, Department where Emp_Dep=Dep_id Подскажите, как сюда присоединить еще фамилию начальника? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2018, 13:09 |
|
||
|
Выбрать из двух таблиц
|
|||
|---|---|---|---|
|
#18+
FolgaПодскажите, как сюда присоединить еще фамилию начальника? Фамилия тебя где? Emp_Surname? Она присоединена. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2018, 03:00 |
|
||
|
Выбрать из двух таблиц
|
|||
|---|---|---|---|
|
#18+
Folga, Одного начальника отдела или всех? Если отдел без начальника? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2018, 04:37 |
|
||
|
Выбрать из двух таблиц
|
|||
|---|---|---|---|
|
#18+
FolgaДобрый день! Есть две таблицы: сотрудники и отделы. В каждом отделе есть начальник, который тоже является сотрудником. Чтобы хранить информацию о начальниках отделов я создала еще одну таблицу (диаграмма в приложении). Мне нужно выбрать 10 фамилий сотрудников, названия отдела, где работает и фамилию начальника. select top (10) concat(Emp_Surname, ' '+substring(Emp_Name,1,1)+'.', substring(Emp_patronymic,1,1)+'.') as Сотрудник, Dep_title as Отдел from Employee, Department where Emp_Dep=Dep_id Подскажите, как сюда присоединить еще фамилию начальника? 1. Ваша структура допускает, что один человек может быть начальником разных отделов (такое в жизни не бывает) 2. Ваш cross join (Employee, Department) вернет несуществующие связки, вым нужно использовать обычный join . P.S. Что-то сегодня повышенная активность студентов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2018, 11:30 |
|
||
|
Выбрать из двух таблиц
|
|||
|---|---|---|---|
|
#18+
LameUser1. Ваша структура допускает, что один человек может быть начальником разных отделов (такое в жизни не бывает) Сколько угодно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2018, 11:54 |
|
||
|
Выбрать из двух таблиц
|
|||
|---|---|---|---|
|
#18+
982183LameUser1. Ваша структура допускает, что один человек может быть начальником разных отделов (такое в жизни не бывает) Сколько угодно. Только в случаях совместительства, о чем здесь речь и не идет (судя по схеме бд). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2018, 12:42 |
|
||
|
Выбрать из двух таблиц
|
|||
|---|---|---|---|
|
#18+
LameUser, Я не знаю, как бывает в реальной жизни, наверно это все оговаривается. В моем задании было оговорено только условие, что в отделе может быть только один начальник. Оно вроде соблюдено. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2018, 12:45 |
|
||
|
Выбрать из двух таблиц
|
|||
|---|---|---|---|
|
#18+
Kopelly, Нужно выбрать фамилию начальника отдела, в котором работает выбранный сотрудник. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2018, 12:47 |
|
||
|
Выбрать из двух таблиц
|
|||
|---|---|---|---|
|
#18+
"выбрать" - это "указать в запросе". У тебя фамилия там есть select .... Emp_Surname Может ты хочешь в таблице связей хранить фамилию? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2018, 12:50 |
|
||
|
Выбрать из двух таблиц
|
|||
|---|---|---|---|
|
#18+
FolgaВ моем задании было оговорено только условие, что в отделе может быть только один начальник. Тогда правильнее хранить Dir_ID в Department (Иначе есть завести несколько начальников в один отдел). select top (10) concat(Emp_Surname, ' '+substring(Emp_Name,1,1)+'.', substring(Emp_patronymic,1,1)+'.') as Сотрудник, concat(EmployeeDirector.Emp_Surname, ' '+substring(EmployeeDirector.Emp_Name,1,1)+'.', substring(EmployeeDirector.Emp_patronymic,1,1)+'.') as Начальник, Dep_title as Отдел from Employee, Department, Director, Employee EmployeeDirector where Emp_Dep=Department.Dep_id and Department.Dep_id = Director.Dep_id and EmployeeDirector.Emp_ID = Dir_PersNum ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2018, 13:04 |
|
||
|
Выбрать из двух таблиц
|
|||
|---|---|---|---|
|
#18+
Kopelly, вы имеете ввиду завести отдельную таблицу для начальников заводить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2018, 22:10 |
|
||
|
Выбрать из двух таблиц
|
|||
|---|---|---|---|
|
#18+
Folga, Я предлагаю Dir_PersNum перенести в таблицу Department. Таблицу Director удалить за ненадобностью ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2018, 04:13 |
|
||
|
Выбрать из двух таблиц
|
|||
|---|---|---|---|
|
#18+
ДеЖаВю 21390784 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2018, 04:19 |
|
||
|
Выбрать из двух таблиц
|
|||
|---|---|---|---|
|
#18+
Kopelly, Да, я тоже об этом думала. Тогда получается, я сначала заполняю таблицу отделов и поле начальник оставляю пустым, потом заполняю таблицу сотрудников и добавляю в отделы начальников, правильно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2018, 10:20 |
|
||
|
Выбрать из двух таблиц
|
|||
|---|---|---|---|
|
#18+
982183, Спасибо за ссылку. Но я все равно не понимаю, как же правильней делать. Как будто раскритиковали оба способа. Это видимо вопрос из разряда "сколько людей, столько мнений". Да и мой вопрос был собственно в другом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2018, 13:16 |
|
||
|
Выбрать из двух таблиц
|
|||
|---|---|---|---|
|
#18+
Folga, из жизни обычно что-то вроде таблицы сотрудники, отделы, должности(тут либо сквозные или со связью на отделы) и таблица перемещений сотрудник - отдел - должность срок от(до) и долей (совомещение) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2018, 15:55 |
|
||
|
Выбрать из двух таблиц
|
|||
|---|---|---|---|
|
#18+
И все-таки как же сделать выборку? Пишу запрос select top (10) concat(Employee.Emp_Surname, ' '+substring(Employee.Emp_Name,1,1)+'.', substring(Employee.Emp_patronymic,1,1)+'.') as Сотрудник, datediff(year, Employee.Emp_birthday, Getdate()) as Возраст, Dep_title as Отдел, EmpDirect.Emp_Surname as Начальник from Employee, Department, Director, Employee as EmpDirect where (Employee.Emp_Dep=Department.Dep_id) and (EmpDirect.Emp_id=Dir_PersNum) and (EmpDirect.Emp_Dep=Employee.Emp_Dep) но он почему-то для всех сотрудников выдает один и тот же отдел и одного начальника. Подскажите, что не так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2018, 05:23 |
|
||
|
Выбрать из двух таблиц
|
|||
|---|---|---|---|
|
#18+
Folga, Убери "top (10)" и посмотри на всю выборку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2018, 05:45 |
|
||
|
Выбрать из двух таблиц
|
|||
|---|---|---|---|
|
#18+
Пробовала еще вот так select top (10) concat(Employee.Emp_Surname, ' '+substring(Employee.Emp_Name,1,1)+'.', substring(Employee.Emp_patronymic,1,1)+'.') as Сотрудник, datediff(year, Employee.Emp_birthday, Getdate()) as Возраст from Employee, Department, Director, Employee as EmpDirect inner join Department as Отдел on Employee.Emp_Dep=Department.Dep_id inner join EmpDirect as Начальник on Department.Dep_id = Director.Dir_Dep and EmpDirect.Emp_ID = Dir_PersNum но тут говорит, что Не удалось привязать составной идентификатор "Employee.Emp_Dep". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2018, 05:47 |
|
||
|
Выбрать из двух таблиц
|
|||
|---|---|---|---|
|
#18+
"Join" описывает что! и по каким условиям присоединять (а не уточняющее условие для указанных в "From" через "," таблиц) Так что через "join" надо писать так: Код: sql 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2018, 06:03 |
|
||
|
Выбрать из двух таблиц
|
|||
|---|---|---|---|
|
#18+
Folgaно тут говорит, что Не удалось привязать составной идентификатор "Employee.Emp_Dep". Пишет потому что join'ы соединяются к Employee as EmpDirect, остальные таблицы перечисленные в "From" через запятую join'ам не видны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2018, 06:06 |
|
||
|
Выбрать из двух таблиц
|
|||
|---|---|---|---|
|
#18+
Kopelly, если убрать "top 10", то все выдает правильно. А почему так? И как тогда выбрать именно 10 записей? А вот Код: sql 1. 2. 3. 4. 5. 6. 7. выдает только два столбца - Сотрудник и Возраст. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2018, 14:23 |
|
||
|
|

start [/forum/topic.php?fid=46&fpage=148&tid=1689645]: |
0ms |
get settings: |
9ms |
get forum list: |
18ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
35ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
74ms |
get tp. blocked users: |
2ms |
| others: | 231ms |
| total: | 393ms |

| 0 / 0 |
