powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите с запросом
4 сообщений из 4, страница 1 из 1
Помогите с запросом
    #38651458
k1mOn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Приветствую. Как пример имеется база MySQL, в которой три таблицы.
table1 состоит из 4 столбцов: ID, Value, Option, Date.
table2 состоит из ID, и Value.
table3 состоит из ID и rDate,
Задача примерно следующая:

Сложить Value в table1,у которых один ID и опция X за последние 30 дней, при условие что rDate в table3 больше 30 дней, и результат записать в Value table2.

Для наглядности:

При регистрации пользователя, ему присваивается Id и дата регистрации(rDate), в таблице три.
Далее, он выполняет определенные операции, допустим inc и dec с присвоенным ему значением, которые записываются в таблицу 1, которая выполняет функцию лога.
Нужно посчитать, насколько за месяц он увеличил присвоенное ему значение, при условие его регистрации более 30 дней, и записать полученное значение в таблицу 2.

Как будет выглядеть sql запрос?

PS в sql очень новичок, пока писал еще возник вопрос о целесообразности использования ключей в подобной схеме(слышал при их существование, и в целом про выполняемую ими функцию, но обязательно ли их использование при малых объемах таблиц?)
...
Рейтинг: 0 / 0
Помогите с запросом
    #38651476
Фотография javajdbc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
k1mOn,

примерно так:

insert into t2
select
id,
sum((case when option='inc' then Value else -Value end))
from
t3
left join t1 on t1.id=t3.id
and t1 date between <начало месяца> and <кобец месяца>
where
t3.rdate < date_add(now(), interval -1 month)


П.С. ключи -- использыйте обязательно.
В первую очередь ПримариКей а потом
внешние ключи тоже.
...
Рейтинг: 0 / 0
Помогите с запросом
    #38651482
k1mOn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо. А <начало месяца> и <конец месяца> тут это что?В смысле, дефолтные параметры, или ?
И это получается несколькими запросами делается, так? Просто я передаю в базу запрос через программу на с#, не будет ли проблем.
...
Рейтинг: 0 / 0
Помогите с запросом
    #38651571
Фотография javajdbc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
k1mOn,

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

....where rdate >= '2014-04-01' and rdate < '2014-05-01'....


или используйте параметры, прочитайте как там в Ц# это делается.
Что-то типа (псевдо-код):

String sqlString = "..........where rdate >= ? and rdate < ?...."
Db.DoSql(sqlString, new Date.parse('2014-04-01'), new Date.parse('2014-05-01') )
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите с запросом
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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