Форум программистов, компьютерный форум, киберфорум
MySQL
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
0 / 0 / 0
Регистрация: 05.04.2022
Сообщений: 300

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

17.11.2022, 13:33. Показов 2007. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru