0 / 0 / 0
Регистрация: 05.04.2022
Сообщений: 300

Заполнение табеля БД

17.11.2022, 13:33. Показов 2034. Ответов 40

Студворк — интернет-сервис помощи студентам
Доброго времен суток.

Столкнулась с проблемой. у меня есть 2 скрипта, в 1 из которых выводятся все даты выбранного месяца и на базе этой таблицы создаётся таблица tmptable в которой выводятся числа выбранного месяца и тип дня недели (1- рабочий , 0 – выходной).

мне нужно увязать дни месяца в tmptable с полями таблицы newtb , чтобы проставить типы дней недели и заполнять табель рабочего времени. но не знаю как это можно сделать..

скрипты прилагаю.

скрины таблиц так же прилагаю. 1 скрин - таблица newtb, 2 tmptable
Миниатюры
Заполнение табеля БД   Заполнение табеля БД  
Вложения
Тип файла: rar скрипты.rar (924 байт, 8 просмотров)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.11.2022, 13:33
Ответы с готовыми решениями:

Заполнение табеля
Добрый день! Нужна помощь! Скажите, как можно задать условие при построении запроса табеля, чтобы если у сотрудника есть запись в...

Авто заполнение столбцов табеля формы
Добрый вечер. Подскажите кто может, возможно ли реализовать заполнение автоматом столбцов формы в тех, которые выпадают "Сб" или...

Заполнение табеля в упп 1.2
Здравствуйте Подскажите пожалуйста новичку. Как можно заполнить табличную часть, а именно "Табель учета рабочего времени",...

40
21.11.2022, 09:37
Студворк — интернет-сервис помощи студентам

Не по теме:

Gluck99, ты зря иронизируешь по поводу "девочки". Не знаю сколько ей , да мне и безразлично.
У меня внучке 12 , а внуку 10 ))) .Тоже в приват писала...Она написала, что преподу показала -отсюда и девочка )))
Я ,вообще-то, 34 года женат счастливо.Это не моя пассия. Просто захотелось помочь
За похожий проект лет 30 назад с меня попросили 20 зелени (ну правда там было ещё).

0
408 / 242 / 88
Регистрация: 28.04.2022
Сообщений: 1,207
21.11.2022, 11:27
Цитата Сообщение от ValentinaVal20 Посмотреть сообщение
Проект действительно сложный. Но нам такой дали в школе на конкурс.
В школе? Это слишком даже для школьного конкурса. Здесь студентам кулинарных техникумов дают задания гораздо менее сложные. Тут что-то не то.

Не по теме:

Цитата Сообщение от Kulma Посмотреть сообщение
Она написала, что преподу показала -отсюда и девочка
Просто странно всё это выглядит.

0
0 / 0 / 0
Регистрация: 05.04.2022
Сообщений: 300
21.11.2022, 13:04  [ТС]
Gluck99, спасибо за помощь
0
0 / 0 / 0
Регистрация: 05.04.2022
Сообщений: 300
22.11.2022, 11:47  [ТС]
Gluck99, я дико извиняюсь не было возможности быть за компом. ваш запрос формирует табель по Id сотрудника. А мне нужно по id приема. Это что нужно исправить и где подскажите пожалуйста
0
408 / 242 / 88
Регистрация: 28.04.2022
Сообщений: 1,207
22.11.2022, 12:54
Цитата Сообщение от ValentinaVal20 Посмотреть сообщение
А мне нужно по id приема. Это что нужно исправить и где подскажите пожалуйста
Вы не можете заменить одно название поля на другое?
MySQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
SELECT pd.ID_priema,  
  d.D1, d.D2, d.D3, d.D4, d.D5, d.D6, d.D7, d.D8, d.D9, d.D10,
  pd.D1 + pd.D2 + pd.D3 + pd.D4 + pd.D5 + pd.D6 + pd.D7 +pd. D8 + pd.D9 + pd.D10 AS ForMonth
  FROM 
(SELECT 
  ID_priema,
  SUM(CASE WHEN (SELECT `day type` FROM tmptable WHERE dayMonth = 1) = 0 THEN 0 ELSE `1` END) AS D1,
  SUM(CASE WHEN (SELECT `day type` FROM tmptable WHERE dayMonth = 2) = 0 THEN 0 ELSE `2` END) AS D2,
  SUM(CASE WHEN (SELECT `day type` FROM tmptable WHERE dayMonth = 3) = 0 THEN 0 ELSE `3` END) AS D3,
  SUM(CASE WHEN (SELECT `day type` FROM tmptable WHERE dayMonth = 4) = 0 THEN 0 ELSE `4` END) AS D4,
  SUM(CASE WHEN (SELECT `day type` FROM tmptable WHERE dayMonth = 5) = 0 THEN 0 ELSE `5` END) AS D5,
  SUM(CASE WHEN (SELECT `day type` FROM tmptable WHERE dayMonth = 6) = 0 THEN 0 ELSE `6` END) AS D6,
  SUM(CASE WHEN (SELECT `day type` FROM tmptable WHERE dayMonth = 7) = 0 THEN 0 ELSE `7` END) AS D7,
  SUM(CASE WHEN (SELECT `day type` FROM tmptable WHERE dayMonth = 8) = 0 THEN 0 ELSE `8` END) AS D8,
  SUM(CASE WHEN (SELECT `day type` FROM tmptable WHERE dayMonth = 9) = 0 THEN 0 ELSE `9` END) AS D9,
  SUM(CASE WHEN (SELECT `day type` FROM tmptable WHERE dayMonth = 10) = 0 THEN 0 ELSE `10` END) AS D10
 
  -- И так далее до 31 дня
 
  FROM newtb
GROUP BY ID_priema) pd
  JOIN (
 SELECT 
  ID_priema,
  SUM(CASE WHEN (SELECT `day type` FROM tmptable WHERE dayMonth = 1) = 0 THEN 0 ELSE `1` END) AS D1,
  SUM(CASE WHEN (SELECT `day type` FROM tmptable WHERE dayMonth = 2) = 0 THEN 0 ELSE `2` END) AS D2,
  SUM(CASE WHEN (SELECT `day type` FROM tmptable WHERE dayMonth = 3) = 0 THEN 0 ELSE `3` END) AS D3,
  SUM(CASE WHEN (SELECT `day type` FROM tmptable WHERE dayMonth = 4) = 0 THEN 0 ELSE `4` END) AS D4,
  SUM(CASE WHEN (SELECT `day type` FROM tmptable WHERE dayMonth = 5) = 0 THEN 0 ELSE `5` END) AS D5,
  SUM(CASE WHEN (SELECT `day type` FROM tmptable WHERE dayMonth = 6) = 0 THEN 0 ELSE `6` END) AS D6,
  SUM(CASE WHEN (SELECT `day type` FROM tmptable WHERE dayMonth = 7) = 0 THEN 0 ELSE `7` END) AS D7,
  SUM(CASE WHEN (SELECT `day type` FROM tmptable WHERE dayMonth = 8) = 0 THEN 0 ELSE `8` END) AS D8,
  SUM(CASE WHEN (SELECT `day type` FROM tmptable WHERE dayMonth = 9) = 0 THEN 0 ELSE `9` END) AS D9,
  SUM(CASE WHEN (SELECT `day type` FROM tmptable WHERE dayMonth = 10) = 0 THEN 0 ELSE `10` END) AS D10
 
  -- И так далее до 31 дня
 
  FROM newtb
GROUP BY ID_priema) d ON d.ID_priema = pd.ID_priema
0
0 / 0 / 0
Регистрация: 05.04.2022
Сообщений: 300
22.11.2022, 13:46  [ТС]
Gluck99, Я заменяла но выдавало ошибку. Я не заметила просто еще в одном месте

Добавлено через 10 минут
Gluck99, выдаёт ошибку хотя данная таблица есть в БД

3 Unknown table 'tmptable' in information_schema F:\БД\Запрос табель ноябрь.sql 9 41

Добавлено через 10 минут
Gluck99, ошибка найдена! )

Добавлено через 22 минуты
Gluck99, скажите а возможно здесь выводить еще и оклад?
0
408 / 242 / 88
Регистрация: 28.04.2022
Сообщений: 1,207
22.11.2022, 14:03
Цитата Сообщение от ValentinaVal20 Посмотреть сообщение
скажите а возможно здесь выводить еще и оклад?
Если у вас id_priema и id_sotrudnika связаны между собой в какой-то таблице, то, вероятно, можно сделать ещё один JOIN к этой колбасе выше и получить оклад. Задействовать id_sotrudnika напрямую не получится из-за группировки.
И ещё один момент. Сейчас у вас несколько записей о сотрудниках выводится (в запросе выше), т.е. группировки по ним нет. Соответственно, если мы сделаем JOIN с таблицей сотрудников и потом с должностями (где оклады), у нас появятся дубли сотрудников.
0
0 / 0 / 0
Регистрация: 05.04.2022
Сообщений: 300
22.11.2022, 14:06  [ТС]
Gluck99,
Цитата Сообщение от Gluck99 Посмотреть сообщение
у нас появятся дубли сотрудников.
это так, потому что 1 сотрудник может работать на нескольких должностях, верно?

Добавлено через 51 секунду
Цитата Сообщение от Gluck99 Посмотреть сообщение
Если у вас id_priema и id_sotrudnika связаны между собой в какой-то таблице
да, есть такая связь.
0
408 / 242 / 88
Регистрация: 28.04.2022
Сообщений: 1,207
22.11.2022, 14:20
Цитата Сообщение от ValentinaVal20 Посмотреть сообщение
1 сотрудник может работать на нескольких должностях, верно?
Скорее всего так.
Цитата Сообщение от ValentinaVal20 Посмотреть сообщение
есть такая связь.
MySQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
SELECT f.*, ps.ID_sotrudnika, s.FIO, d.Dolzhnost_sokrashenno, d.Oklad 
FROM (SELECT pd.ID_priema,  
  d.D1, d.D2, d.D3, d.D4, d.D5, d.D6, d.D7, d.D8, d.D9, d.D10,
  pd.D1 + pd.D2 + pd.D3 + pd.D4 + pd.D5 + pd.D6 + pd.D7 +pd. D8 + pd.D9 + pd.D10 AS ForMonth
  FROM 
(SELECT 
  ID_priema,
  SUM(CASE WHEN (SELECT `day type` FROM tmptable WHERE dayMonth = 1) = 0 THEN 0 ELSE `1` END) AS D1,
  SUM(CASE WHEN (SELECT `day type` FROM tmptable WHERE dayMonth = 2) = 0 THEN 0 ELSE `2` END) AS D2,
  SUM(CASE WHEN (SELECT `day type` FROM tmptable WHERE dayMonth = 3) = 0 THEN 0 ELSE `3` END) AS D3,
  SUM(CASE WHEN (SELECT `day type` FROM tmptable WHERE dayMonth = 4) = 0 THEN 0 ELSE `4` END) AS D4,
  SUM(CASE WHEN (SELECT `day type` FROM tmptable WHERE dayMonth = 5) = 0 THEN 0 ELSE `5` END) AS D5,
  SUM(CASE WHEN (SELECT `day type` FROM tmptable WHERE dayMonth = 6) = 0 THEN 0 ELSE `6` END) AS D6,
  SUM(CASE WHEN (SELECT `day type` FROM tmptable WHERE dayMonth = 7) = 0 THEN 0 ELSE `7` END) AS D7,
  SUM(CASE WHEN (SELECT `day type` FROM tmptable WHERE dayMonth = 8) = 0 THEN 0 ELSE `8` END) AS D8,
  SUM(CASE WHEN (SELECT `day type` FROM tmptable WHERE dayMonth = 9) = 0 THEN 0 ELSE `9` END) AS D9,
  SUM(CASE WHEN (SELECT `day type` FROM tmptable WHERE dayMonth = 10) = 0 THEN 0 ELSE `10` END) AS D10
  -- И так далее до 31 дня
  FROM newtb
GROUP BY ID_priema) pd
  JOIN (
 SELECT 
  ID_priema,
  SUM(CASE WHEN (SELECT `day type` FROM tmptable WHERE dayMonth = 1) = 0 THEN 0 ELSE `1` END) AS D1,
  SUM(CASE WHEN (SELECT `day type` FROM tmptable WHERE dayMonth = 2) = 0 THEN 0 ELSE `2` END) AS D2,
  SUM(CASE WHEN (SELECT `day type` FROM tmptable WHERE dayMonth = 3) = 0 THEN 0 ELSE `3` END) AS D3,
  SUM(CASE WHEN (SELECT `day type` FROM tmptable WHERE dayMonth = 4) = 0 THEN 0 ELSE `4` END) AS D4,
  SUM(CASE WHEN (SELECT `day type` FROM tmptable WHERE dayMonth = 5) = 0 THEN 0 ELSE `5` END) AS D5,
  SUM(CASE WHEN (SELECT `day type` FROM tmptable WHERE dayMonth = 6) = 0 THEN 0 ELSE `6` END) AS D6,
  SUM(CASE WHEN (SELECT `day type` FROM tmptable WHERE dayMonth = 7) = 0 THEN 0 ELSE `7` END) AS D7,
  SUM(CASE WHEN (SELECT `day type` FROM tmptable WHERE dayMonth = 8) = 0 THEN 0 ELSE `8` END) AS D8,
  SUM(CASE WHEN (SELECT `day type` FROM tmptable WHERE dayMonth = 9) = 0 THEN 0 ELSE `9` END) AS D9,
  SUM(CASE WHEN (SELECT `day type` FROM tmptable WHERE dayMonth = 10) = 0 THEN 0 ELSE `10` END) AS D10
  -- И так далее до 31 дня
  FROM newtb
GROUP BY ID_priema) d ON d.ID_priema = pd.ID_priema) f
  JOIN priem_sotrudnikov ps ON f.ID_priema = ps.ID_priema
  JOIN sotrudniki s ON ps.ID_sotrudnika = s.ID_sotrudnika
  JOIN dolzhnosti d ON d.ID_dolzhnosti = ps.ID_dolzhnosti
0
0 / 0 / 0
Регистрация: 05.04.2022
Сообщений: 300
22.11.2022, 14:22  [ТС]
Gluck99, скажите а вы не сталкивались с такой ошибкой? я запросы делаю в разделе представления, и мне выдаёт ошибку, не знаю почему

Не удалось получить текст SQL для объекта 'view2'.
Возможно, у вас недостаточно привилегий для получения метаданных данного объекта.
0
408 / 242 / 88
Регистрация: 28.04.2022
Сообщений: 1,207
22.11.2022, 14:41
Цитата Сообщение от ValentinaVal20 Посмотреть сообщение
мне выдаёт ошибку, не знаю почему
Не сталкивался с такой ошибкой. У меня всё Ок.
Возможно, что-то у вас с правами доступа произошло. Под каким пользователем вы создаёте view?
0
0 / 0 / 0
Регистрация: 05.04.2022
Сообщений: 300
22.11.2022, 14:41  [ТС]
Цитата Сообщение от Gluck99 Посмотреть сообщение
Под каким пользователем вы создаёте view?
это что вы имеете ввиду? какое у меня соединение?
0
408 / 242 / 88
Регистрация: 28.04.2022
Сообщений: 1,207
22.11.2022, 14:43
Цитата Сообщение от ValentinaVal20 Посмотреть сообщение
это что вы имеете ввиду? какое у меня соединение?
Под каким пользователем подключаетесь к серверу? Что там у вас с правами? Это же прямым текстом написано в ошибке.
0
0 / 0 / 0
Регистрация: 05.04.2022
Сообщений: 300
22.11.2022, 14:46  [ТС]
Gluck99, вот настройки моего соединения
Миниатюры
Заполнение табеля БД  
0
408 / 242 / 88
Регистрация: 28.04.2022
Сообщений: 1,207
22.11.2022, 14:49
ValentinaVal20, Я не очень понимаю что там у вас такое, я тоже работаю в DBForge, у меня такой ошибки нет с тем же самым кодом (специально проверил на версии 5.7).
0
0 / 0 / 0
Регистрация: 05.04.2022
Сообщений: 300
22.11.2022, 14:54  [ТС]
Gluck99, у меня эта ошибка выходит когда я нажимаю обновить объект
0
408 / 242 / 88
Регистрация: 28.04.2022
Сообщений: 1,207
22.11.2022, 15:21
ValentinaVal20, Вот отформатированный текст, у меня никакой ошибки не возникает, ни при сохранении, ни при обновлении.
И не забудьте, что тут только 10 дней сделано, надо ещё 21 добавить.
Вложения
Тип файла: zip View1.zip (749 байт, 3 просмотров)
0
0 / 0 / 0
Регистрация: 05.04.2022
Сообщений: 300
22.11.2022, 15:29  [ТС]
Gluck99, дни я добавила сразу. запуская ваш файл, но тоже ошибка.. странно однако)

а больничные и отпуска возможно связать здесь? и можно ли добавть в этот запрос поле надбавка
0
408 / 242 / 88
Регистрация: 28.04.2022
Сообщений: 1,207
22.11.2022, 16:03
Цитата Сообщение от ValentinaVal20 Посмотреть сообщение
а больничные и отпуска возможно связать здесь? и можно ли добавть в этот запрос поле надбавка
Про больничные и отпуска не знаю, я не держу в уме структуру вашей БД, у меня и другие дела есть.
Поле "надбавка" добавить можно легко, таблица-то присоединена.
0
0 / 0 / 0
Регистрация: 05.04.2022
Сообщений: 300
22.11.2022, 16:05  [ТС]
Gluck99, я вот попробовала, но у меня почему-то записи стали дублироваться
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.11.2022, 16:05

Автоматизированное заполнение табеля в Excel
Всем доброе время суток ! Заполнять табель учёта рабочего времени можно, с помощью клавиатуры. При таком способе заполнения для...

УПП. Заполнение Табеля учета рабочего времени
Добрый день. Конфигурация УПП. Проблема с правильным заполнением Табеля учета рабочего времени. Как правильно заполнить Табель, учитывая,...

Формирование табеля
В общем перечитал, переискал много информации, но за несколько дней таких поисков, придумал сам кое что, но это выглядит не красиво и...

Формирование табеля
Добрый день ув. Форумчане! Задача - вывести табель. Есть шаблон xslt: Главный шаблон: <xsl:template match="/"> ...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Опции темы

Новые блоги и статьи
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru