Форум программистов, компьютерный форум, киберфорум
Наши страницы
Java: Базы данных
Войти
Регистрация
Восстановить пароль
 
Hedkost
2 / 2 / 1
Регистрация: 01.08.2012
Сообщений: 63
1

Не понимаю как построить запрос

22.11.2018, 00:35. Просмотров 384. Ответов 12
Метки нет (Все метки)

Доброго времени суток. Проблема такова, имеются две таблицы (работники, журнал посещений). Журнал имеет поля: id_worker, date, status. Таблица работники имеет поля: id, name.

В журнал каждый день записывается был на работе работник или нет. Как вывести таблицу по всем работникам помесячно, например:

Имя| 1 | 2 | 3 |.....31
Иванов | - | - | +|.... +

Конечно можно сначала сделать массив из работников, для каждого работника сделать запрос к бд для получения массива из поля status (для определенного года и месяца).

Но нельзя ли сделать это одним запросом к бд? Подскажите пожалуйста.
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.11.2018, 00:35
Ответы с готовыми решениями:

Не понимаю, как построить график
Нужно построить обычный график. Представим, что левый столбец - x, а правый - y. Как уже не...

не понимаю как построить график, объясните пож-та
На шар, лежащий на гладкой горизонтальной поверхности, налетает другой шар такого же радиуса,...

Подскажите по структуре сайта, не понимаю как построить архитектуру
Привет. Решил поучить php/mysql/js немного. Интереса ради делаю сайт с отзывами о фирмах. У меня...

Запрос, Общие Итоги, Не Понимаю Как Считаются
Добрый день! Раньше я думал что знаю, что такое итоги. Думал, что Итоги это то же самое, что...

Запрос INSERT INTO как построить запрос правильно?
Народ помогите пожалуйста сделать запрос правильно. Имеется таблица users в ней имеется данные для...

12
Hedkost
2 / 2 / 1
Регистрация: 01.08.2012
Сообщений: 63
22.11.2018, 20:59  [ТС] 2
Понимаю, что нужно использовать перекрестные запросы, но пока не вкурил как... буду глубоко признателен за подсказку.
0
KEKCoGEN
Эксперт Java
2260 / 2105 / 538
Регистрация: 28.12.2010
Сообщений: 8,306
22.11.2018, 21:09 3
Hedkost, select worker.name, journal.date, journal.status from worker join journal on worker.id=journal.id_worker
0
Hedkost
2 / 2 / 1
Регистрация: 01.08.2012
Сообщений: 63
22.11.2018, 21:19  [ТС] 4
KEKCoGEN, получится обычная таблица:

Иванов 21.11.2018 -
Иванов 22.11.2018 +
Иванов 23.11.2018 -

А мне нужно скармливать запросу Год, Месяц(или хотя бы кол-во дней), получить:
Имя 1 2 3 ..... 31
Иванов - - + ..... +
0
22.11.2018, 21:19
KEKCoGEN
Эксперт Java
2260 / 2105 / 538
Регистрация: 28.12.2010
Сообщений: 8,306
22.11.2018, 21:22 5
Hedkost, добавь where с нужной датой.
0
Hedkost
2 / 2 / 1
Регистрация: 01.08.2012
Сообщений: 63
22.11.2018, 21:33  [ТС] 6
KEKCoGEN, дело не в дате, грубо говоря, у меня записываются данные в JORNAL (каждый день, на каждого работника) строка id_worker, date, status.
Иванов 21.11.2018 -
Иванов 22.11.2018 +
Иванов 23.11.2018 -

При запросе мне нужно эти строки... будто перевернуть:
Имя 1 2 3 ..... 31
Иванов - - + ..... +

Просто работников много, нужна полная таблица на месяц, с отметками о присутствии.
0
KEKCoGEN
Эксперт Java
2260 / 2105 / 538
Регистрация: 28.12.2010
Сообщений: 8,306
23.11.2018, 01:47 7
Цитата Сообщение от Hedkost Посмотреть сообщение
При запросе мне нужно эти строки... будто перевернуть:
Такой переворот (а точнее группинг) делается в коде по результатам запроса, который я выше написал. В SQL такое не делают.
0
DimaxDe
66 / 50 / 18
Регистрация: 07.11.2018
Сообщений: 403
23.11.2018, 11:11 8
Можно создать функцию в базе которая перевернёт как надо..непонятно ,что и как перевернуть?
0
KEKCoGEN
Эксперт Java
2260 / 2105 / 538
Регистрация: 28.12.2010
Сообщений: 8,306
23.11.2018, 11:24 9
DimaxDe, можно и суп вилкой есть, но никто так не делает. БД нужна чтобы хранить и выдавать данные по запросу. Форматировать эти данные и подготавливать к отображению - функция джава сервера.
0
DimaxDe
66 / 50 / 18
Регистрация: 07.11.2018
Сообщений: 403
23.11.2018, 11:54 10
я не профи ,сам учусь,но вазможно вашу проблему сможем решить.Можно поиграть с этим запросом
SQL
1
2
3
SELECT worker.name, journal.date, journal.status FROM worker JOIN journal 
ON worker.id=journal.id_worker WHERE journal.date IN 
(с какого по какой день или делаем субселект) ORDER BY journal.date ASC;
Добавлено через 1 минуту
Цитата Сообщение от KEKCoGEN Посмотреть сообщение
можно и суп вилкой есть, но никто так не делает
полностью с вами согласен

Добавлено через 5 минут
В данный момент изучаю функции и процедуры бд,думал на этом примере поупражняться),но наверное это неподходящий случай)
0
KEKCoGEN
Эксперт Java
2260 / 2105 / 538
Регистрация: 28.12.2010
Сообщений: 8,306
23.11.2018, 13:26 11
DimaxDe, у меня нет проблемы, а запрос выше не корректный. Вместо in надо использовать between.
Если ты изучаешь процедуры бд зачем создал вопрос в разделе джава?
0
DimaxDe
66 / 50 / 18
Регистрация: 07.11.2018
Сообщений: 403
23.11.2018, 14:00 12
Цитата Сообщение от KEKCoGEN Посмотреть сообщение
у меня нет проблемы
это было обращение к автору вопроса
Цитата Сообщение от KEKCoGEN Посмотреть сообщение
ачем создал вопрос в разделе джава?
я его не создавал
Цитата Сообщение от KEKCoGEN Посмотреть сообщение
Вместо in надо использовать between.
если сделать выборку и тогда in,но канечно можно и с between без in.
Я предложил вариант а не конечный запрос,пусть автор и решает как ему удобней.
0
KEKCoGEN
Эксперт Java
2260 / 2105 / 538
Регистрация: 28.12.2010
Сообщений: 8,306
24.11.2018, 01:28 13
Цитата Сообщение от DimaxDe Посмотреть сообщение
это было обращение к автору вопроса
Цитата Сообщение от DimaxDe Посмотреть сообщение
я его не создавал
С телефона не заметил что ты не ТС.
0
24.11.2018, 01:28
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.11.2018, 01:28

Нужно задать sql запрос. не понимаю как. Нужно из одной таблицы вывести данные
В общем, нужно задать sql запрос где будет подсчитано общее кол-во записей (name - название работ)...

Как построить запрос?
вот нашел пример ну понять не могу что такое .dvo и .dvv и .ei и .kz кто может подсказать зачем...

Как построить запрос?
Есть таблица с записями типа: 'DOCUMENT001','01/01/2002',2 'DOCUMENT002','14/03/2002',3 т.е....


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.