|
Помогите с запросом
|
|||
---|---|---|---|
#18+
База данных электронной проходной Perco. FireBird 2.5 Есть 3 таблицы 1 Staff - сотрудники - поле ID_STAFF 2 SubDiv_REF - подразделения - поле ID_REF 3 STAFF_REF - таблица между ними, показывает с какого периода сотрудник работал в каком-либо подразделении поля STAFF_ID - ссылка на сотрудника = Staff.ID_STAFF SUBDIV_ID - ссылка на подразделение = SubDiv_REF.ID_REF DATE_ACTION - Дата перехода сотрудника в подразделение Требуется получить список сотрудников с последним подразделением где он работает select s.*,r.* from staff s left join staff_ref r on s.id_staff = r.staff_id 1. Как ограничить список подразделений только последним значением по данному сотруднику (с максимальным значением поля STAFF_REF.DATE_ACTION по сотруднику) ? 2 как подцепить 3 таблицу SubDiv_REF с наименованиями подразделений? В итоге нужна плоская таблица Сотрудник-Подразделение ( Staff.ID_STAFF - SubDiv_REF.ID_REF ) Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2017, 14:54 |
|
Помогите с запросом
|
|||
---|---|---|---|
#18+
Игорь К-24, контр-вопрос про staff left join staff_ref - у вас что, могут быть сотрудники не включенные в подразделения, или left join тут от балды? http://www.ibase.ru/joins/ ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2017, 15:24 |
|
Помогите с запросом
|
|||
---|---|---|---|
#18+
Код: sql 1. 2. 3. 4. 5. 6.
? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2017, 15:25 |
|
Помогите с запросом
|
|||
---|---|---|---|
#18+
Игорь К-24Требуется получить список сотрудников с последним подразделением где он работаетстранное требование, смысл в последнем, если куда удобнее и понятнее получить подразделение активное в на требуемую дату. Работник может быть одновременной в двух подразделениях? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2017, 15:34 |
|
Помогите с запросом
|
|||
---|---|---|---|
#18+
Ivan_Pisarevsky> куда удобнее и понятнее получить подразделение активное в на требуемую дату. Было бы о чём спорить... Ну напиши ему запрос на дату, он туда current_date подставит, делов-то. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2017, 15:47 |
|
Помогите с запросом
|
|||
---|---|---|---|
#18+
Гаджимурадов РустамНу напиши ему запросЕсли б я был техподдержкой Perco, а так, автор только лефт джойн от балды прислал и никаких более попыток, лениво все писать за него. Помочь - да, вместо - нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2017, 15:55 |
|
Помогите с запросом
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустам, Работает, спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2017, 15:56 |
|
Помогите с запросом
|
|||
---|---|---|---|
#18+
Ivan_Pisarevsky, Текущее подразделение, где работает сотрудник является последним по дате. т.к. оно изменяется на основании приказа ОК и дата смены подразделения не может быть больше текущей. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2017, 16:01 |
|
Помогите с запросом
|
|||
---|---|---|---|
#18+
Ivan_PisarevskyГаджимурадов РустамНу напиши ему запросЕсли б я был техподдержкой Perco, а так, автор только лефт джойн от балды прислал и никаких более попыток, лениво все писать за него. Помочь - да, вместо - нет. Зря Вы так. Пытался. Только зациклился на left join. Всем спасибо, пойду прикручивать. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2017, 16:05 |
|
Помогите с запросом
|
|||
---|---|---|---|
#18+
На всякий случай, рабочий вариант автор Гаджимурадов Рустам select Staff.*, (select first 1 DISPLAY_Name from SubDiv_REF, STAFF_REF where SubDiv_REF.ID_REF = STAFF_REF.SUBDIV_ID and STAFF_REF.STAFF_ID = Staff.ID_STAFF order by DATE_ACTION desc) from Staff ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2017, 16:40 |
|
Помогите с запросом
|
|||
---|---|---|---|
#18+
Интересно вот, DATE_ACTION - это DATE или TIMESTAMP ? Если ли UNIQUE CONSTRAINT на связку полей (DATE_ACTION + STAFF_ID ) ? Код: sql 1.
Вроде бы очевидно. Код: sql 1. 2. 3. 4. 5.
Вроде тоже просто. Код: sql 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2017, 17:05 |
|
Помогите с запросом
|
|||
---|---|---|---|
#18+
Arioch> Интересно вот, DATE_ACTION - это DATE или TIMESTAMP ? А какая разница? Сотрудники по три раза на дню по отделам скачут? Arioch> Если ли UNIQUE CONSTRAINT на связку полей (DATE_ACTION + STAFF_ID ) ? Зачем? И без DIV_ID он не нужен. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2017, 17:12 |
|
Помогите с запросом
|
|||
---|---|---|---|
#18+
Гаджимурадов РустамСотрудники по три раза на дню по отделам скачут? ОБЫЧНО - нет. Хотя если в Калабуховском доме большая свара - то почему бы и нет. Но ОБЫЧНО все программы работают без ошибок. Ошибки и получаются, когда мы считали, что зелёное в реальной жизни треугольным не бывает, а оно вот поди ж ты, взяло и случилось Гаджимурадов РустамЗачем? И без DIV_ID он не нужен. Чтобы не было неожиданностей. SUBDIV_ID как раз в этом ограничении не нужен вообще. БД построена так, что в один день на одного сотрудника двух приказов быть не может. Если же это случилось - нужно сдаваться в любом случае, и одинаковые там отделы в обоих приказах или разные уже не имеет значения ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2017, 17:29 |
|
Помогите с запросом
|
|||
---|---|---|---|
#18+
Arioch> SUBDIV_ID как раз в этом ограничении не нужен вообще. Arioch> БД построена так, что в один день на одного сотрудника Arioch> двух приказов быть не может. Ну вот, как пафосно начинал и до чего скатился... :) Arioch> одинаковые там отделы в обоих приказах или разные уже не имеет значения В смысле? Совместителей никогда не видел что ли? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2017, 18:20 |
|
Помогите с запросом
|
|||
---|---|---|---|
#18+
Гаджимурадов РустамArioch> SUBDIV_ID как раз в этом ограничении не нужен вообще. Arioch> БД построена так, что в один день на одного сотрудника Arioch> двух приказов быть не может. Ну вот, как пафосно начинал и до чего скатился... :) Arioch> одинаковые там отделы в обоих приказах или разные уже не имеет значения В смысле? Совместителей никогда не видел что ли? Предположу что один и тот же человек может быть сотрудником в разных организациях. И тупо заведен в справочнике сотрудников N раз. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2017, 03:49 |
|
Помогите с запросом
|
|||
---|---|---|---|
#18+
fraks> И тупо заведен в справочнике сотрудников N раз. Не, это тупо бардак и ошибки. Типа когда сотрудник уволился-вернулся - заводить его по новой, вместо актуализирования старой записи. Я говорил именно о совместителях - когда человек работает в двух отделах одновременно (возможно, во втором не на полную ставку). Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2017, 12:26 |
|
Помогите с запросом
|
|||
---|---|---|---|
#18+
Гаджимурадов РустамЯ говорил именно о совместителях - когда человек работает в двух отделах одновременно Хорошее замечание. Как раз на тему зеленого и треугольного одновременно. Пропустил реплику (и ее кажется все проигнорировали, включая топикстартера и тебя): Ivan_PisarevskyРаботник может быть одновременной в двух подразделениях? Но ведь такой случай, опять таки, невозможен при текущей структуре БД и при запросе, предложенном выше. Гаджимурадов Рустам Код: sql 1. 2. 3.
Вот какой из нескольких одновременно актуальных отделов такой запрос вернет? А любой, в какой последним засунули - тот и вернёт. А если в оба засунули одним приказом, т.е. DATE_ACTION совпадает, хоть бы оно даже было и TIMESTAMP а не DATE, то получаем типовой рандом. И в итоге надо писать две SubDiv_REF таблицы: Одну - для текущего состояния, и вторую - историческую, для всех движений. И неплохо бы завести третью таблицу - с конкретными приказами, на которую и давать ссылку вместо DATE_ACTION Либо же в SubDiv_REF добавлять поле типа DATE_ACTION_END и заполнять его для прошлых должностей. Тогда текущей отделы те, у которых DATE_ACTION_END IS NULL Слегка напоминает старый флейм 18494107 Я вчера про это хотел заикнуться, но влом было. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2017, 13:42 |
|
Помогите с запросом
|
|||
---|---|---|---|
#18+
Arioch> Хорошее замечание. Как раз на тему зеленого и треугольного одновременно. Arioch> Пропустил реплику (и ее кажется все проигнорировали, включая ... тебя) Хватит уже бред нести. > Но ведь такой случай, опять таки, невозможен при текущей структуре БД Враньё. > и при запросе, предложенном выше. Его легко подправить (дописать ещё один вложенный запрос). > И в итоге надо писать две SubDiv_REF таблицы: > Одну - для текущего состояния, и вторую - историческую, для всех движений. Пижнец, насяльника! (с) Рано тебе в архитекторы, рано. > Слегка напоминает старый флейм 18494107 Знатный топик, забавный. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2017, 14:54 |
|
Помогите с запросом
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустам> Но ведь такой случай, опять таки, невозможен при текущей структуре БД Враньё. Демонстрируй, только без додумываний и дописываний новых таблиц и столбцов, не упомянутых ранее. Пока от тебя только хамство. > и при запросе, предложенном выше. Его легко подправить (дописать ещё один вложенный запрос). Но ты не дописал и не подправил. Это факт, хотя ты его и пытаешься замылить. Твой запрос ничем не лучше моего - мой тоже "легко подправить". Пижнец, насяльника! (с) Рано тебе в архитекторы, рано. Похвалил себя гуру, чей вклад в архитектуры исчерпывается труизмом, что его запросы "легко поправить". Кому-нибудь другому, конечно, не самому же гениалиссимусу от архитектуы этим заниматься. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2017, 15:15 |
|
Помогите с запросом
|
|||
---|---|---|---|
#18+
Утомил, Д'Артаньян, ты маладец! Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2017, 15:57 |
|
Помогите с запросом
|
|||
---|---|---|---|
#18+
Бедный гениалиссимус. Полчаса пытался выдумать пример и не смог. Соболезную. Гаджимурадов Рустам> Но ведь такой случай, опять таки, невозможен при текущей структуре БД Враньё. Может быть признаешь теперь, что это твоё враньё было, а не моё? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2017, 16:11 |
|
Помогите с запросом
|
|||
---|---|---|---|
#18+
Оу, быдло никак не хочет успокоиться!.. :) Arioch> Полчаса пытался выдумать пример и не смог. Ну, "не смог придумать пример" - ещё ладно (хотите пример - их есть у меня!), но почему полчаса-то? Держи, болезный: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
Давай, рассказывай, что тут невозможного в текущей структуре БД. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2017, 16:27 |
|
Помогите с запросом
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустам(хотите пример - их есть у меня!), но почему полчаса-то? Держи, болезный: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
Какой хороший пример, он аккуратно игнорирует основное использование этих таблиц: отслеживание перевода сотрудников из одного отдела в другой. Быдло смотрит и умиляется. Но однако, чтобы вернуться к практической работе, добавляем ещё одно событие. Причём событие основное для БД, про которое топик-стартер писал, а не дополнительное и экзотическое, которое мы с тобой в комментах придумали. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
Ждём-с запрос типа "легко подправить", который отличит ПЕРЕВОД Пети от СОВМЕСТИТЕЛЬСТВА Васи. Без магических констант, дополнительных столбцов-таблиц и прочего. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2017, 16:36 |
|
|
start [/forum/topic.php?fid=40&fpage=40&tid=1561375]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
42ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
69ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 171ms |
0 / 0 |