Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Выборка последних трех столбцов (ячеек) 
:(
    Опции темы
almagnit
Дата 3.6.2008, 07:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 283
Регистрация: 3.4.2008

Репутация: нет
Всего: 7



У меня имеется таблица со столбцами дней месяца, мне нужно выбрать три последних дня, независимо

от количества дней в месяце. Есть ли элегантный способ решения данной задачи ?
PM MAIL ICQ   Вверх
Akina
Дата 3.6.2008, 08:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 45
Всего: 454



LastDateInMonth = DateAdd(day,-1,DateAdd(month,1,FirstDateInMonth))


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
almagnit
Дата 3.6.2008, 09:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 283
Регистрация: 3.4.2008

Репутация: нет
Всего: 7



Akina, твой вариант возвращает значение последних чисел месяца, а я хочу найти метод выборки

данных последних столбцов в таблице, не зная их общего количества количества.
PM MAIL ICQ   Вверх
skyboy
Дата 3.6.2008, 09:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 15
Всего: 260



Цитата(almagnit @  3.6.2008,  06:52 Найти цитируемый пост)
со столбцами дней месяца

т.е. месяца мы не знаем? только день? 
PM MAIL   Вверх
almagnit
Дата 3.6.2008, 09:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 283
Регистрация: 3.4.2008

Репутация: нет
Всего: 7



Цитата(skyboy @  3.6.2008,  09:11 Найти цитируемый пост)
т.е. месяца мы не знаем? только день?

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

Т.е. если февральская таблица значит day_27, day_28, day_29 и в таком духе для других месяцев.

ЗЫ:

Вообще мне пришла мысль чтоб брать 31 день если ошибка, 30 и т.д. пока не пропустит и потом уменьшать

счетчик от 3-х до нуля. Буду пробовать. Жду других вариантов.
PM MAIL ICQ   Вверх
Akina
Дата 3.6.2008, 09:48 (ссылка) |    (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 45
Всего: 454



Денормализованная таблица - источник геморроя.
В рамках SQL задача не решается.
Пора указать диалект SQL...


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
skyboy
Дата 3.6.2008, 09:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 15
Всего: 260



Цитата(almagnit @  3.6.2008,  08:32 Найти цитируемый пост)
Т.е. если февральская таблица

т.е. номер месяца определяется только именем таблицы? 
отлично. тогда ты же запрос где-то формируешь? вот и определяй там, где формируешь запрос, сколько дней в месяце.
а что? ты же сам выбрал такой 
Цитата(Akina @  3.6.2008,  08:48 Найти цитируемый пост)
источник геморроя

может, переделаешь в нормальную структуру? 
PM MAIL   Вверх
almagnit
Дата 3.6.2008, 10:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 283
Регистрация: 3.4.2008

Репутация: нет
Всего: 7



Цитата(Akina @  3.6.2008,  09:48 Найти цитируемый пост)
Денормализованная таблица - источник геморроя.

С чего ты это решил. База данных нормализирована по всем трем формам.


Цитата(Akina @  3.6.2008,  09:48 Найти цитируемый пост)
В рамках SQL задача не решается.

Понял, спасибо.


Цитата(Akina @  3.6.2008,  09:48 Найти цитируемый пост)
Пора указать диалект SQL...

Незнаю, база данных MySQL.

ЗЫ:
Всетаки не теряю надежды на решение этой задачи средствами SQL.
PM MAIL ICQ   Вверх
almagnit
Дата 3.6.2008, 10:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 283
Регистрация: 3.4.2008

Репутация: нет
Всего: 7



Цитата(skyboy @  3.6.2008,  09:53 Найти цитируемый пост)
может, переделаешь в нормальную структуру? 

Буду рад приведенным примерам.

Цель базы данных состоит в том чтоб хранить в себе сформированный график выходов рабочих. При 

добавлении нового рабочего в базу данных формируется график выходов на весь год.

Я пользуюсь таблицами, "рабочие" и 12 таблиц для каждого месяца. Связь идет через поле табельного номера.

Подскажите мне, что именно нужно нормализировать для повышения эффективности ?
PM MAIL ICQ   Вверх
Deniz
Дата 3.6.2008, 10:45 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1251
Регистрация: 16.10.2004
Где: Новый Уренгой

Репутация: 6
Всего: 44



Цитата(almagnit @  3.6.2008,  13:38 Найти цитируемый пост)
Я пользуюсь таблицами, "рабочие" и 12 таблиц для каждого месяца. Связь идет через поле табельного номера.

Подскажите мне, что именно нужно нормализировать для повышения эффективности ?
1 таблица на все 12 месяцев поля: таб№, дата, признаки всякие. Т.е. не day_1,  day_2, day_3, day_4, ... day_30, day_31 а по вертикали, где будет полная, нормальная дата.
А для отображения на клиенте крути как хочешь.


--------------------
"Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с)
PM ICQ   Вверх
almagnit
Дата 3.6.2008, 11:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 283
Регистрация: 3.4.2008

Репутация: нет
Всего: 7



Deniz, ты предлагаешь создать таблицу:
_______|Январь|Февраль|Март|...|
1 число  |\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
2 число  |\\\\\\\\\\\" ДАННЫЕ " \\\\\\\
... число |\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

А как ее связать с конкретным человеком по табельному № ? 

Создавать для каждого рабочего свою таблицу ?
PM MAIL ICQ   Вверх
skyboy
Дата 3.6.2008, 13:23 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 15
Всего: 260



Цитата(almagnit @  3.6.2008,  09:07 Найти цитируемый пост)
 База данных нормализирована по всем трем формам.

знаешь, ты не прав.
Цитата(almagnit @  3.6.2008,  10:28 Найти цитируемый пост)
Создавать для каждого рабочего свою таблицу ?

нет. опять придешь к тому же. но только если количество дней в месяце <= 31, то рабочих будет.... ээээ.... ну. тебе виднее, сколько будет рабочих.
Цитата(almagnit @  3.6.2008,  09:38 Найти цитируемый пост)
Цель базы данных состоит в том чтоб хранить в себе сформированный график выходов рабочих. При добавлении нового рабочего в базу данных формируется график выходов на весь год.

задача все ещё не ясна. что есть, что надо сформировать и что выдать на выходе?
PM MAIL   Вверх
Akina
Дата 3.6.2008, 13:51 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 45
Всего: 454



Цитата(almagnit @  3.6.2008,  11:07 Найти цитируемый пост)
С чего ты это решил. База данных нормализирована по всем трем формам.

У тебя есть одна сущность - количество рабочих часов (ну или чего там) в определенном дне для определенного работника. Она у тебя хранится в нескольких полях нескольких таблиц. И ты осмеливаешься ЭТО называть нормализацией???


Цитата(almagnit @  3.6.2008,  12:28 Найти цитируемый пост)
Deniz, ты предлагаешь создать таблицу:

А как ее связать с конкретным человеком по табельному № ? 

Создавать для каждого рабочего свою таблицу ? 

Структура таблицы такая:
  • ID
  • Worker_ID (видимо, таб. номер)
  • Date (дата)
  • Stored_Data (информация на работника на эту дату - скажем, количество раб. часов)
Можно не вводить поле ID, используя в качестве первичного индекса комбинацию полей Worker_ID и Date... хотя я бы не стал этого делать. А вот в зависимости от того, какие запросы на выборку в базу будут наиболее часты, строил бы от 1 до 4 индексов по полям Worker_ID и Date по отдельности или вместе в различном порядке. Индекс ускорит работу. Лишний индекс - замедлит. Ищи оптимум.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
almagnit
Дата 3.6.2008, 16:27 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 283
Регистрация: 3.4.2008

Репутация: нет
Всего: 7



Цитата(Akina @  3.6.2008,  13:51 Найти цитируемый пост)
Она у тебя хранится в нескольких полях нескольких таблиц.


Да я имею несколько таблиц вместо одной и я думаю что если количество рабочих будет несколько тыс.

то работать с отдельной таблицей(напр. на 10000 записей) будет рациональнее чем с одной общей (на 120 000 записей)

Цитата(Akina @  3.6.2008,  13:51 Найти цитируемый пост)
Структура таблицы такая:


Я думаю такая структура больше подходит для учета чего либо, а я нуждаюсь в планировании на год

Цитата(skyboy @  3.6.2008,  13:23 Найти цитируемый пост)
задача все ещё не ясна. что есть, что надо сформировать и что выдать на выходе?


На выходе мне нужно сформировать график выходных и рабочих дней трудящихся, спланировав его на год

ЗЫ:
Вообщето вопрос состоял не о нормализации моей БД (хотя об этом я хотел поговорить несколько позже),

а о вопросе получения данных, но если ответ прозвучавший ранее "о невозможности " окончательный

тогда буду  smile дальше.  smile 


PM MAIL ICQ   Вверх
Akina
Дата 3.6.2008, 16:44 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 45
Всего: 454



Цитата(almagnit @  3.6.2008,  17:27 Найти цитируемый пост)
работать с отдельной таблицей(напр. на 10000 записей) будет рациональнее чем с одной общей (на 120 000 записей)

Ну да... автомобиль с квадратными колесами рациональнее, чем с круглыми, потому что его черта с два угонят.

120 тыс. записей даже для Аксесса не нагрузка, а уж для MySQL, да еще таких простеньких - вообще семечки.
Цитата(almagnit @  3.6.2008,  17:27 Найти цитируемый пост)
Я думаю такая структура больше подходит для учета чего либо

Осмелюсь предположить, что сперва надо подучить теорию, а потом думать. И только после этого - делать. Уж извини...


Это сообщение отредактировал(а) Akina - 3.6.2008, 16:47


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Составление SQL-запросов | Следующая тема »


 




[ Время генерации скрипта: 0.0575 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.