powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Access SQL
33 сообщений из 33, показаны все 2 страниц
Access SQL
    #32868432
demon11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Народ есть ли в Access SQL такое понятие как переменная?
в MySQL типа моно так например
select @perem:=fld1 from table
и дальше эту переменную юзать
...
Рейтинг: 0 / 0
Access SQL
    #32868441
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Переменные есть, но для этого надо писать на VBA.
...
Рейтинг: 0 / 0
Access SQL
    #32868504
Фотография AlexJuice
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
demon11Народ есть ли в Access SQL такое понятие как переменная?
в MySQL типа моно так например
select @perem:=fld1 from table
и дальше эту переменную юзать
Если в ХП, то
Код: plaintext
1.
Declare @perem int
SELECT @perem = ...
...
Рейтинг: 0 / 0
Access SQL
    #32868544
demon11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
эт понятно, думал мот моно SQL-м,
вощем то проблема такая
есть запрос
SELECT DETAIL.[Дата начала], Count(*) AS cnt
FROM DETAIL
WHERE ((DETAIL.[Время начала])>=#8:00:00 AM# And (DETAIL.[Время начала])<=#7:59:59 PM#)
GROUP BY DETAIL.[Дата начала]
UNION
SELECT DETAIL.[Дата начала], Count(*) AS cnt
FROM DETAIL
WHERE ((DETAIL.[Время начала])<=#8:00:00 AM# or (DETAIL.[Время начала])>=#7:59:59 PM#)
GROUP BY DETAIL.[Дата начала];
(не уверен в правильности расстановки скобок, выдрал из контекста)
здесь выб-ся сначала count-ы от 8 am до 8 pm, типа день,
потом от 8 pm до 8 am ночь
токма ночь по разным суткам нуно раскидать
...
Рейтинг: 0 / 0
Access SQL
    #32868573
demon11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
начало пред-й фразы восновном ВС
за определение переменной спасибо
правда к сожелению Access 97
...
Рейтинг: 0 / 0
Access SQL
    #32868594
vizio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
подробнее - в чем проблема и зачем переменные понадобились?
...
Рейтинг: 0 / 0
Access SQL
    #32868604
Kelme
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vizioподробнее - в чем проблема и зачем переменные понадобились?

а что, использование переменных это настолько редкое дело? ;)
...
Рейтинг: 0 / 0
Access SQL
    #32868607
demon11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
пытаюсь объяснять
поля:
дата
время
код
...
нуно типа отчет count-ы по определенному "коду"
сгруппировать по день ночь (день с 8 am до 8 pm, ночь с 8 pm до 8 am)
еси группировать по дате то просто
select count(*) from table where код=1 group by дата
а по этим промежуткам нечто подобное
ночь распадается на 2 интервала, нуно их собрать, те count за предыдущие сутки с 8 pm и за след-е до 8 am
с днем то понятно (см часть до union) второй реплики
а как быть с ночью?
...
Рейтинг: 0 / 0
Access SQL
    #32868611
vizio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Kelme vizioподробнее - в чем проблема и зачем переменные понадобились?

а что, использование переменных это настолько редкое дело? ;)

не настолько ))
но если можно задачу на сиквеле сделать без процедурного языка, то лучше на сиквеле
...
Рейтинг: 0 / 0
Access SQL
    #32868629
demon11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вот и пытаюсь понять моно ли???
...
Рейтинг: 0 / 0
Access SQL
    #32868645
demon11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
еси с языком то н-но примерно так
сначала все DISTINCT дата
потом для каждой даты считать день, заносить в заранье приготовленную и очищенную таблицу
ночь из кусков для этой даты и для след-й
(кстати при работами с датами какова конструкция моно ли так
дата + (INTERVAL 1 DAY)), заносим в таблицу
...
Рейтинг: 0 / 0
Access SQL
    #32868646
Фотография Shark
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кароче.
Переменных в эксеcе нет, зато можно писать функции на бэйсике и использовать их в запросе. Пишем функцию
Function fnThisIsNight(p1 as date) as string
If (Hour(p1)>7) and Hour(p1)<20 Then fnThisIsNight="День" Else fnThisIsNight="Ночь"
end function
Ну и в запросе группируешь по этой функции
...
Рейтинг: 0 / 0
Access SQL
    #32868648
Alexey Sh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чего "моно"? Нету в аксессе Embedded SQL.

Код: plaintext
1.
2.
3.
4.
5.
dim rs as recordset
dim a
set rs=currentdb().openrecordset("select fld1 from ....")
if not rs.EOF then
  a=rs!fld1
end if
...
Рейтинг: 0 / 0
Access SQL
    #32868652
vizio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
что-нибудь типа??

Код: plaintext
1.
2.
3.
4.
5.
SELECT [Дата начала], StartTime, Count(*) AS cnt FROM (
  SELECT DETAIL.[Дата начала],
  IIf((DETAIL.[Время начала])<# 8 : 00 : 00  AM#), "night", IIf((DETAIL.[Время начала])<=# 8 : 00 : 00  PM#), "day", "night")) as StartTime
  FROM DETAIL
) GROUP BY [Дата начала], StartTime
...
Рейтинг: 0 / 0
Access SQL
    #32868670
demon11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
не понимает подзапрос посе FROM
...
Рейтинг: 0 / 0
Access SQL
    #32868695
vizio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ну так отдельно подзапрос прогони, найди ошибку в синтаксисе
подзапросы Access понимает
или сделай так, как Shark написал, вынеси в отдельную функцию и группируй по ней
...
Рейтинг: 0 / 0
Access SQL
    #32868704
demon11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vizioчто-нибудь типа??

Код: plaintext
1.
2.
3.
4.
5.
SELECT [Дата начала], StartTime, Count(*) AS cnt FROM (
  SELECT DETAIL.[Дата начала],
  IIf((DETAIL.[Время начала])<# 8 : 00 : 00  AM#), "night", IIf((DETAIL.[Время начала])<=# 8 : 00 : 00  PM#), "day", "night")) as StartTime
  FROM DETAIL
) GROUP BY [Дата начала], StartTime

еси разбить на 2 подзапроса, чот слишком много получается,
в течении одних суток то легко получить union-м
но нуно чтоб ночь была после 8 pm 'предыдущих суток' и до 8 am 'текущих'
...
Рейтинг: 0 / 0
Access SQL
    #32868712
vizio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
зачем разбивать на 2 подзапроса?
...
Рейтинг: 0 / 0
Access SQL
    #32868717
vizio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
demon11(кстати при работами с датами какова конструкция моно ли так
дата + (INTERVAL 1 DAY)), заносим в таблицу

возможна простая конструкция (дата + 1)
если правильно понимаю вопрос...
...
Рейтинг: 0 / 0
Access SQL
    #32868719
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
GROUP BY Int(DETAIL.[Дата начала] + DETAIL.[Время начала] - 0.5)

Т.е. группировка по дате не самого момента, а того, который за 12 часов до него. Такой момент для всей ночи будет в пределах одних суток.
...
Рейтинг: 0 / 0
Access SQL
    #32868725
demon11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
т. е. я имею ввиду то что вы видимо обозвали 'отдельно прогнать подзапрос'
тоды чот не корректно работает
правда подзапрос у меня выглядит несколько по иному
SELECT DETAIL.[Дата начала], IIf(((DETAIL.[Время начала])<#8:00:00 AM#), "night", "day") AS StartTime
FROM DETAIL;
но думаю смысл тот, приведенная конструкция не сработала
...
Рейтинг: 0 / 0
Access SQL
    #32868727
demon11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
пордон подзапрос не корректный малость, хотя суть от этого не меняется
как быть с ночью???
...
Рейтинг: 0 / 0
Access SQL
    #32868736
demon11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Владимир СанычGROUP BY Int(DETAIL.[Дата начала] + DETAIL.[Время начала] - 0.5)

Т.е. группировка по дате не самого момента, а того, который за 12 часов до него. Такой момент для всей ночи будет в пределах одних суток.
это идея, еси так моно поподробнее
...
Рейтинг: 0 / 0
Access SQL
    #32868745
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
SELECT DETAIL.[Дата начала], Count(*) AS cnt
FROM DETAIL
WHERE ((DETAIL.[Время начала])>=#8:00:00 AM# And (DETAIL.[Время начала])<#8:00:00 PM#)
GROUP BY DETAIL.[Дата начала]
UNION
SELECT GROUP BY Int(DETAIL.[Дата начала] + DETAIL.[Время начала] - 0.5), Count(*) AS cnt
FROM DETAIL
WHERE ((DETAIL.[Время начала])<=#8:00:00 AM# or (DETAIL.[Время начала])>#8:00:00 PM#)
GROUP BY Int(DETAIL.[Дата начала] + DETAIL.[Время начала] - 0.5);

Я еще одну вещь подправил - чтобы последняя секунда правильно учитывалась.
...
Рейтинг: 0 / 0
Access SQL
    #32868748
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Я написал и сделал несколько исправлений. Вот сейчас правильно.
...
Рейтинг: 0 / 0
Access SQL
    #32868756
demon11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Владимир СанычSELECT DETAIL.[Дата начала], Count(*) AS cnt
FROM DETAIL
WHERE ((DETAIL.[Время начала])>=#8:00:00 AM# And (DETAIL.[Время начала])<#8:00:00 PM#)
GROUP BY DETAIL.[Дата начала]
UNION
SELECT GROUP BY Int(DETAIL.[Дата начала] + DETAIL.[Время начала] - 0.5), Count(*) AS cnt
FROM DETAIL
WHERE ((DETAIL.[Время начала])<=#8:00:00 AM# or (DETAIL.[Время начала])>#8:00:00 PM#)
GROUP BY Int(DETAIL.[Дата начала] + DETAIL.[Время начала] - 0.5);

Я еще одну вещь подправил - чтобы последняя секунда правильно учитывалась.

да так здорово, катит
токма одна загвоздка
посе селекта GROUP BY Int(DETAIL.[Дата начала] + DETAIL.[Время начала] - 0.5) не катит ставлю
Int(DETAIL.[Дата начала] + DETAIL.[Время начала] - 0.5)
тоды непонятно к какой дате все это относится, потому что int не дата, моно его какньдь обратно???
...
Рейтинг: 0 / 0
Access SQL
    #32868762
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Int от даты должно работать как дата. Если точно не получается, тогда можно CDate или CVDate.
...
Рейтинг: 0 / 0
Access SQL
    #32868765
demon11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
придумал там моно Min(DETAIL.[Дата начала] )
ща проверю еще точно, но вроде здорово
не знал что так моно
...
Рейтинг: 0 / 0
Access SQL
    #32868769
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Min - нехорошо. Если в какую-нибудь ночь не будет данных до полуночи, то дата получится не та.
...
Рейтинг: 0 / 0
Access SQL
    #32868796
demon11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
CDate или CVDate не работают
...
Рейтинг: 0 / 0
Access SQL
    #32868803
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
demon11CDate или CVDate не работают
А если Format(..., "dd/mm/yyyy")?
...
Рейтинг: 0 / 0
Access SQL
    #32868829
demon11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
с форматом вообще все отлчно спасибо
таким образом как я понимаю в любом случае получается дата начала временного промежутка
...
Рейтинг: 0 / 0
Access SQL
    #32868835
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Совершенно верно.
...
Рейтинг: 0 / 0
33 сообщений из 33, показаны все 2 страниц
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Access SQL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]