Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности

Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
24.08.2004, 11:34
|
|||
|---|---|---|---|
|
|||
Запрос к нескольким таблицам |
|||
|
#18+
есть две таблицы: pr1 - приказы о приёме на работу pr2 - кадровые перемещения pr1 имеет поля: sotr - код сотрудника dp1 - дата приёма pod1 - код подразделения pr2 имеет поля: sotr - код сотрудника dp2 - дата перевода pod2 - код подразделения Требуется вывести сотрудников с текущими подразделениями. Нужно брать подразделение из той таблицы, у которой дата dp1 или dp2 свежее для данного сотрудника. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.08.2004, 12:07
|
|||
|---|---|---|---|
|
|||
Запрос к нескольким таблицам |
|||
|
#18+
Ну, а на каком языке-то? В любом случае алгоритм наверное такой: Если существует хоть одна запись в таблице pr2 тогда выбрать запись с максимальной датой для сотрудника из таблицы pr2 иначе выбрать запись для сотрудника из таблицы pr1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.08.2004, 15:32
|
|||
|---|---|---|---|
|
|||
Запрос к нескольким таблицам |
|||
|
#18+
Нужно сделать SQL-запрос. Я так понимаю с функцией max() Т.е. выбирается запись pod1 или pod2 из двух таблиц со свежайшей датой dp1 или dp2 Т.е. нужно объединить pod1 с pod2 в одно поле (pod) и dp1 с dp2 в другое (dp). Сгруппировать их по сотрудникам и выбрать. Типа так: SELECT sotr, pod, max(dp) FROM pr GROUP BY sotr Вопрос: как объединить эти поля в запросе? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.08.2004, 15:49
|
|||
|---|---|---|---|
|
|||
Запрос к нескольким таблицам |
|||
|
#18+
Нет, не так... Наверное, так: Select Sotr, Pod = если есть в pr2 хоть одна запись тогда код подразделения из pr2 для максимальной даты иначе код подразделения из pr1 From pr1 Сорри, точного синтаксиса не знаю :) И вопрос надо было куда-нидь в MSSQL запостить, там спецов больше обитает по T-SQL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.08.2004, 15:55
|
|||
|---|---|---|---|
|
|||
Запрос к нескольким таблицам |
|||
|
#18+
Нет, нужно обязательно максимальную дату из двух таблиц. Потому, что человек может несколько раз приниматься и увольняться и несколко раз переводится из подразделения в подразделение. Так что, полюбому надо объёдинять эти две таблицы, группировать по сотруднику и выбирать подразделение по максимальной дате. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.08.2004, 16:18
|
|||
|---|---|---|---|
|
|||
Запрос к нескольким таблицам |
|||
|
#18+
Тогда есть вариант сделать полный union таблицам, и уже из объединенного массива делать выборку максимальных дат для сотрудника, с группировкой по сотруднику. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.08.2004, 16:37
|
|||
|---|---|---|---|
|
|||
Запрос к нескольким таблицам |
|||
|
#18+
Именно так! осталось только с синтаксисом разобраться... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.08.2004, 14:50
|
|||
|---|---|---|---|
|
|||
Запрос к нескольким таблицам |
|||
|
#18+
UNION то получился... SELECT sotr, pod1, dp1 FROM pr1 UNION SELECT sotr, pod2, dp2 FROM pr2 А как вот теперь из этого объединения выбирать по максимальной дате? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.08.2004, 17:10
|
|||
|---|---|---|---|
|
|||
Запрос к нескольким таблицам |
|||
|
#18+
А вы можете данный запрос выгрузить во временную таблицу, типа into #a, И затем выбрать максимальную дату с группировкой по сотруднику, типа: Select Sotr, max(DP) From #a Group by Sotr ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.08.2004, 17:53
|
|||
|---|---|---|---|
|
|||
Запрос к нескольким таблицам |
|||
|
#18+
Ну, я не очень силен в T-SQL-е, так что смотрите BOL, я всего-лишь предложил алгоритм :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
26.08.2004, 14:09
|
|||
|---|---|---|---|
|
|||
Запрос к нескольким таблицам |
|||
|
#18+
MoonRabbitА вы можете данный запрос выгрузить во временную таблицу, типа into #a, И затем выбрать максимальную дату с группировкой по сотруднику, типа: Select Sotr, max(DP) From #a Group by Sotr В этом случае мы получим только имя сотрудника и максимальную дату. А нам то нужно подразделение на эту дату. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
26.08.2004, 14:26
|
|||
|---|---|---|---|
|
|||
Запрос к нескольким таблицам |
|||
|
#18+
Cyr MoonRabbitА вы можете данный запрос выгрузить во временную таблицу, типа into #a, И затем выбрать максимальную дату с группировкой по сотруднику, типа: Select Sotr, max(DP) From #a Group by Sotr В этом случае мы получим только имя сотрудника и максимальную дату. А нам то нужно подразделение на эту дату. Ну и джоините слева ваши таблицы подразделений по Sotr и dp. Непонятным остается момент, из какой таблицы брать подразделение, если записи окажуться в двух таблицах. З.Ы. Если вопрос по MSSQL, задавали бы в соответствующем форуме - там быстрее ответят. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=16&mobile=1&tid=1348239]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
2ms |
check topic access: |
3ms |
track hit: |
225ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
52ms |
get tp. blocked users: |
2ms |
| others: | 280ms |
| total: | 603ms |

| 0 / 0 |
