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

start [/forum/topic.php?fid=16&msg=32663283&tid=1348239]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
73ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
| others: | 276ms |
| total: | 438ms |

| 0 / 0 |
