powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / помогите создать таблицу
12 сообщений из 12, страница 1 из 1
помогите создать таблицу
    #39370637
Виталийv4567
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть таблица из двух колонок, в первой автоматом (функцией now) подставляется текущая дата, во вторую записываются данные - число.
Необходимо сделать вторую таблицу, то же состоящую из двух колонок, а вернее из двух ячеек, в одной вводится число, а во второй должна появиться разность между последним введённым числом из первой таблице и числом из второй таблице, которое записано в первую ячейку.
Во второй таблице делать колонки не обязательно. Нужна будет только разность последнего введённого числа из первой таблицы и числа из второй таблицы, которое может вводиться раз в месяц, причём его можно перезаписывать.
Поэтому речь о колонках не идёт, можно просто сделать две ячейки.

За помощь заранее благодарен!
...
Рейтинг: 0 / 0
помогите создать таблицу
    #39370643
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гм... а смысл?
Во-первых, какой смысл в этой разности, если через 5 минут в первую таблицу вставится ещё одна запись, и данные станут невалидными.
Во-вторых, зачем хранить это самое "число из второй таблицы"?
Ну а так - не вижу проблемы. Как искать "последнее введённое число" - на это аж две темы в FAQ написаны:
FAQ: Нумерация строк и другие вопросы про использование переменных
FAQ: Выборка первой/последней записи в группах
Ну а вычитать, я полагаю, ты и так умеешь...
...
Рейтинг: 0 / 0
помогите создать таблицу
    #39370645
Виталийv4567
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
с выборками всё понятно, мне надо как то таблицу создать что бы всё автоматически делалось.
Данные будут валидны.
Ввели новое число в первую таблицу, а во второй таблице второй ячейки новая разность, которая и нужна.
Ввели во вторую таблицу в первую ячейку новое число, а во второй новая разность и т.д.
...
Рейтинг: 0 / 0
помогите создать таблицу
    #39370685
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для этого поле под эту разность не нужно. Надо либо в запросе, где это значение требуется, вычислять его из текущих данных, или составить статический запрос, который это проделывает, и обращаться к нему как к таблице.
...
Рейтинг: 0 / 0
помогите создать таблицу
    #39370686
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PS. В данном случае статический запрос - это представление (view).
PPS. Можно, конечно, организовать подобное на триггерах - но это из пушки по воробьям.
...
Рейтинг: 0 / 0
помогите создать таблицу
    #39370725
Виталийv4567
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может я ошибаюсь, но по моему и ячейку таблицы можно сделать такую которая была бы связанна с другими ячейками и в которую писалась бы разность ячеек с которыми она связанна.
Зачем городить каждый раз сложный запрос, если можно один раз создать такую таблицу, а потом просто выбирать данные с этой ячейки и всё.
И просто хотелось бы узнать как такую таблицу сделать, а не только реально создать её.
...
Рейтинг: 0 / 0
помогите создать таблицу
    #39370732
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это потребуется создать не только таблицу, но и триггеры, которые организуют пересчёт значения по любому изменению любого влияющего значения. Как минимум 2 триггера, а чтобы охватить весь возможный диапазон действий, так и все 6... ну не стОит оно того. Тем более что запрос-то простейший.
...
Рейтинг: 0 / 0
помогите создать таблицу
    #39370940
Виталийv4567
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может и не стоит.
Просто уже интересно как это сделать.
...
Рейтинг: 0 / 0
помогите создать таблицу
    #39370954
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А в чём сложность?
Ну создаём таблицу. Скажем, так:
Код: sql
1.
2.
3.
4.
CREATE TABLE `second` (
manual_value INT,
calc_value INT
);


Пусть первая таблица у нас такая:
Код: sql
1.
2.
3.
4.
CREATE TABLE `first` (
id SERIAL PRIMARY KEY,
value INT
);


Соответственно при вставке, корректировке или удалении записей из первой таблицы нужно пересчитать calc_value во второй.
Рассмотрим один из вариантов, когда пересчёт требуется - в таблицу first добавляется запись или записи. Именно эта процедура должна инициировать изменение во второй таблице - значит, триггер на первой. Изменение должно быть только в случае удачного добавления, значит, AFTER UPDATE. Итого
Код: sql
1.
2.
3.
4.
CREATE TRIGGER `recalc_value` 
AFTER UPDATE ON `first`
FOR EACH ROW
UPDATE `second` SET calc_value = NEW.value - manual_value;|


Всё... причём триггер корректно отработает даже в случае, если manual_value IS NULL - в поле calc_value тоже будет записано значение Null.
Аналогично создаются остальные триггеры.
...
Рейтинг: 0 / 0
помогите создать таблицу
    #39372711
Виталийv4567
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina, огромное спасибо за помощь!

сейчас всё попробую.

Тут у меня возникла ещё проблема.

Пытаюсь выполнить команды mysql из командной строки bash.
В конфиги my.cfg прописал логин, пароль, к какому хосту и базе подключаться.
А так же прописал параметр:

pager=/usr/local/sbin/mysqlsed | most

mysqlsed вот такой:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
#!/bin/sed -f

s/|/│/g;
/^+/bp;b
:p x;/^┌/bm;/^├/bl
:f x;s/^+/┌/;s/-/─/g;s/+$/┐/;s/+/┬/g;h;b
:m x;s/^+/├/;s/-/─/g;s/+$/┤/;s/+/┼/g;h;b
:l x;s/^+/└/;s/-/─/g;s/+$/┘/;s/+/┴/g;h;b



он табличку mysql из чёрточек и плюсиков меняет в нормальный вид.

Но когда запускаю из командной строки bash:
mysql -e "команда mysql"
то этот pager как бы не работает, таблица выводиться mysql-увская из чёрточек и плюсиков и если она не вмещается в экран, то она ломается.

most это пейджер, программка типа less или more, только она ещё раскручивает по горизонтали.

Получается что и она не работает.
Если выполнить вот так:
mysql -e "команда mysql" | most
то вывод уже не ломается и можно перемещаться по горизонтали если вывод не вмещается по горизонтали, но при этом исчезает mysql-евская табличка, таблицы вообще нет никакой и вывод немного смещается, неудобно, данные немного перемешиваются по столбцам.
Как вывести всё вместе с таблицей и развернуть по горизонтали?
За помощь буду ещё раз благодарен!
...
Рейтинг: 0 / 0
помогите создать таблицу
    #39372722
Виталийv4567
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И ещё один момент.
Версия mysql сервера у меня вот какая:
mysqld -V
mysqld Ver 5.5.17-log for Linux on i686 (Source distribution)
У меня в системе несколько сетевых интерфейсов.
Как мне в конфиге прописать что бы mysql сервер слушал не все интерфейсы, а только два из них. В интернете вычитал что в версиях 5.5 и старше это можно сделать, вписав несколько параметров bind-address, что я и сделал.
bind-address = xxx.xxx.xxx.xxx
bind-address = yyy.yyy.yyy.yyy
но он слушает только тот который вписан последним, в данном случае yyy.yyy.yyy.yyy

Как вписать, что бы он слушал именно два интерфейса, а не один вписанный последним.
...
Рейтинг: 0 / 0
помогите создать таблицу
    #39372798
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Одна тема - один вопрос. Создайте две новые темы.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / помогите создать таблицу
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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