Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как найти измененное значение в столбце? / 14 сообщений из 14, страница 1 из 1
19.11.2014, 19:29:02
    #38811159
Как найти измененное значение в столбце?
Есть таблица

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
id  cost  max_cpc  convertion
7    1$        1              10
6    5$        1              11
5    6$        1              14
4    2$        2              15
3    7$        3              15
2    8$        1              1
1    1$        1              10


Как найти последнее измение поля max_cpc (в данном примере это строка с id=4) и от него сделать суммирование полей: cost и convertion одним запросом или с подзапросом?

Не хочется все выбирать и в цикле искать последнее измеение а потом делать новый запос......
...
Рейтинг: 0 / 0
19.11.2014, 19:56:45
    #38811179
alexnews
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как найти измененное значение в столбце?
ДенисОгурцов,
Исходя из своего опыта я делаю обычно два поля дополнительно: created & modified которые хранят данные когда было создано и когда было заапдейчено помимо того еще два поля кем.
Если есть другой способ узнать был бы очень рад услышать о таком.
...
Рейтинг: 0 / 0
19.11.2014, 20:01:58
    #38811187
alex564657498765453
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как найти измененное значение в столбце?
alexnewsДенисОгурцов,
Исходя из своего опыта я делаю обычно два поля дополнительно: created & modified которые хранят данные когда было создано и когда было заапдейчено помимо того еще два поля кем.
Если есть другой способ узнать был бы очень рад услышать о таком.

тригером писать в таблицу логов :)

у тебя способ как и все делают, я тоже так делаю.
...
Рейтинг: 0 / 0
19.11.2014, 22:30:29
    #38811281
Как найти измененное значение в столбце?
alexnews,

Это поле не изменяется. Оно такое при инсерте.
...
Рейтинг: 0 / 0
19.11.2014, 22:45:16
    #38811291
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как найти измененное значение в столбце?
Подозреваю, что нужно читать FAQ по переменным.
...
Рейтинг: 0 / 0
20.11.2014, 09:25:00
    #38811441
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как найти измененное значение в столбце?
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
mysql> create table test (
    -> id int,
    -> cost int,
    -> max_cpc int,
    -> convertion int
    -> );
Query OK, 0 rows affected (0.28 sec)

mysql> insert into test (id, cost, max_cpc, convertion)
    -> select 7,1,1,10 union all
    -> select 6,5,1,11 union all
    -> select 5,6,1,14 union all
    -> select 4,2,2,15 union all
    -> select 3,7,3,15 union all
    -> select 2,8,1,1 union all
    -> select 1,1,1,10;
Query OK, 7 rows affected (0.13 sec)
Records: 7  Duplicates: 0  Warnings: 0

mysql> select sum(cost), sum(convertion)
    -> from
    -> (
    ->   select @a:=max_cpc
    ->   from test
    ->   order by id desc
    ->   limit 1
    -> ) a,
    -> (
    ->   select @b:=max(id)
    ->   from test
    ->   where max_cpc != @a
    -> ) b,
    -> test
    -> where test.id > @b;
+-----------+-----------------+
| sum(cost) | sum(convertion) |
+-----------+-----------------+
|        12 |              35 |
+-----------+-----------------+
1 row in set (0.01 sec)
...
Рейтинг: 0 / 0
20.11.2014, 12:10:26
    #38811688
Как найти измененное значение в столбце?
Akina
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
mysql> create table test (
    -> id int,
    -> cost int,
    -> max_cpc int,
    -> convertion int
    -> );
Query OK, 0 rows affected (0.28 sec)

mysql> insert into test (id, cost, max_cpc, convertion)
    -> select 7,1,1,10 union all
    -> select 6,5,1,11 union all
    -> select 5,6,1,14 union all
    -> select 4,2,2,15 union all
    -> select 3,7,3,15 union all
    -> select 2,8,1,1 union all
    -> select 1,1,1,10;
Query OK, 7 rows affected (0.13 sec)
Records: 7  Duplicates: 0  Warnings: 0

mysql> select sum(cost), sum(convertion)
    -> from
    -> (
    ->   select @a:=max_cpc
    ->   from test
    ->   order by id desc
    ->   limit 1
    -> ) a,
    -> (
    ->   select @b:=max(id)
    ->   from test
    ->   where max_cpc != @a
    -> ) b,
    -> test
    -> where test.id > @b;
+-----------+-----------------+
| sum(cost) | sum(convertion) |
+-----------+-----------------+
|        12 |              35 |
+-----------+-----------------+
1 row in set (0.01 sec)



Ну просто огромное спасибо!
...
Рейтинг: 0 / 0
20.11.2014, 12:28:34
    #38811711
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как найти измененное значение в столбце?
Но рекомендацию miksoft -а рекомендую выполнить. Ибо есть там, на дне, камешки...
...
Рейтинг: 0 / 0
20.11.2014, 19:13:50
    #38812395
alexnews
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как найти измененное значение в столбце?
Akina, Снимаю шляпу. Где можно научиться так писать query? Понимаю что опыт но блин это же просто произведение.
Вопрос: нигде не нашел описание

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
mysql> insert into test (id, cost, max_cpc, convertion)
    -> select 7,1,1,10 union all
    -> select 6,5,1,11 union all
    -> select 5,6,1,14 union all
    -> select 4,2,2,15 union all
    -> select 3,7,3,15 union all
    -> select 2,8,1,1 union all
    -> select 1,1,1,10;



что это означает union all? Я понимаю что это добавление в таблицу новых записей, и что без union all не работает. Хотелось бы для себя уяснить этот способ добавления на будущее.
Заранее спасибо
...
Рейтинг: 0 / 0
20.11.2014, 19:19:36
    #38812402
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как найти измененное значение в столбце?
alexnewsчто это означает union all? UNION Syntax alexnewsЯ понимаю что это добавление в таблицу новых записей, и что без union all не работает.Нет, добавление записей в таблицу - это INSERT.
Можно было проще записать:
Код: sql
1.
insert into test (id, cost, max_cpc, convertion) VALUES (7,1,1,10),(6,5,1,11),(5,6,1,14),(4,2,2,15),(3,7,3,15),(2,8,1,1),(1,1,1,10);
...
Рейтинг: 0 / 0
20.11.2014, 19:39:29
    #38812416
alexnews
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как найти измененное значение в столбце?
miksoft, Я это понял чем всегда и пользовался но никогда не видел такого INSERT с union all. Буда знать на будущее, спасибо.
...
Рейтинг: 0 / 0
20.11.2014, 19:41:55
    #38812417
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как найти измененное значение в столбце?
alexnewsне видел такого INSERT с union allЭто не "INSERT с union all", это "INSERT с SELECT". А уж тот, в свою очередь, с union all.
...
Рейтинг: 0 / 0
20.11.2014, 21:28:26
    #38812499
Адеке
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как найти измененное значение в столбце?
alexnewsпомимо того еще два поля кем.
Вот это как получить?
...
Рейтинг: 0 / 0
20.11.2014, 21:45:17
    #38812509
Адеке
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как найти измененное значение в столбце?
т.е. как заполнять?
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как найти измененное значение в столбце? / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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