![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
программирователь
Пользователь
Регистрация: 15.02.2009
Сообщений: 72
|
![]()
Доброго времени суток!
Имеется такая вот задача: В бд mysql имеется некая таблица. В ней хранятся данные по работе отдельных сотрудников. Необходимо вывести перечень сотрудников (у каждого свой уникальный номер) и его текущее дело. Дело задается отдельно, с указанием даты и времени. Т.е. нужно составить такой запрос, чтобы напротив фамилии сотрудника было указано его дело - т.е. дело, которое имеет максимальную дату и на эту дату-максимальное время. Все данные хранятся в одной таблице. Новое дело просто туда добавляется. Если кто может подсказать как это реализовать - буду очень признателен.
smile
![]() |
![]() |
![]() |
![]() |
#2 |
SQL-коддинг
Участник клуба
Регистрация: 16.01.2009
Сообщений: 1,192
|
![]() Код:
|
![]() |
![]() |
![]() |
#3 |
программирователь
Пользователь
Регистрация: 15.02.2009
Сообщений: 72
|
![]()
Спасибо! А нельзя ли пояснить следующий фрамент?
Код:
smile
![]() |
![]() |
![]() |
![]() |
#4 | |
SQL-коддинг
Участник клуба
Регистрация: 16.01.2009
Сообщений: 1,192
|
![]() Цитата:
emp_private_affair_date_time - поле с датой_временем_дела |
|
![]() |
![]() |
![]() |
#5 |
программирователь
Пользователь
Регистрация: 15.02.2009
Сообщений: 72
|
![]()
все получилось. Спасибо огромное!!!
smile
![]() |
![]() |
![]() |
![]() |
#6 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]() Цитата:
а можно поинтересоваться, а чем group by не угодил? ;( Мне, например, подобные фокусы не очень нравятся (правда, в практике это бывает иногда полезно). Но поясните, пожалуйста, в данном случае, чем Код:
Код:
|
|
![]() |
![]() |
![]() |
#7 | |
SQL-коддинг
Участник клуба
Регистрация: 16.01.2009
Сообщений: 1,192
|
![]() Цитата:
логичнее конечно было бы иметь дело с отдельным справочником сотрудников + таблица ссылок на дела по-хорошему, group by логичнее делать в данном случае по праймари или хотя бы по признаку близкому к нему ну а ФИО сотрудников не является таковым - могут быть полные тёзки поэтому отдельно group by по ФИО делать не стоит, а совместно с праймари можно |
|
![]() |
![]() |
![]() |
#8 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
э нет... так не пойдёт.
![]() заметьте, я же не предлагал убрать emp_no из group_by Безусловно, это было бы в корне неверно!! я предлагал, вместо использования max(FIO) брать просто FIO (и для этого FIO добавить в group_by после emp_no) вот я и пытаюсь понять, этот вариант Вам почему не понравился? (между нами - просто max(fio) само написалось, и так и решили оставить, так? ![]() |
![]() |
![]() |
![]() |
#9 | |
SQL-коддинг
Участник клуба
Регистрация: 16.01.2009
Сообщений: 1,192
|
![]() Цитата:
я в предыдущем ответе пытался объяснить, что ТС задал вопрос не совсем по схеме HR, которая известна в некоторых кругах ![]() соответственно, нет никаких гарантий, что под одним emp_no вдруг не попадутся разные ФИО отсюда и такое расплывчатое решение (собсна как и расплывчатое задание), с попыткой избежать возможных проблем в первом приближении а точнее даже так - это не решение, а всего лишь шаблон, по которому ТС сам доделывает свою задачу (для точного решения пожалста точную постановку задачи) Последний раз редактировалось soleil@mmc; 09.06.2009 в 11:59. |
|
![]() |
![]() |
![]() |
#10 | ||
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
ладно. спасибо за ответ.
Вашу аргументацию я понял. я как раз про это и писал: Цитата:
select emp_no, max(FIO) вернёт одну фамилию (т.е. получатель запроса даже не увидит, что под номером X у него скрывается пяток фамилий. Он получит ОДНУ запись. а select emp_no, FIO ... group by emp_no, FIO вернёт вместе с номером все эти пяток фамилий... впрочем. я соглашусь с Вами - тут всё зависит и от базы и от требований к результатам запроса... Вот против этого - Цитата:
![]() |
||
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Необходимо составить запрос | span4 | SQL, базы данных | 17 | 05.04.2009 11:43 |
Как составить запрос из каталога? | wegeras | PHP | 1 | 28.10.2008 13:36 |
Как правельно составить запрос!! | Areostar | SQL, базы данных | 3 | 16.02.2008 19:49 |
составить запрос к таблицам T1 и T2 | MonteCarlos | SQL, базы данных | 13 | 03.02.2008 14:05 |
SOL-запрос интервала даты и времени в Delphi | DENIS_ | БД в Delphi | 5 | 23.12.2006 12:55 |