Opened 16 months ago
Last modified 10 months ago
#1207 closed улучшение
Необходимо создать процедуру в MYSQL, и новый столбец `bond` в таблице history для работы ревизии r312/base — at Version 9
Reported by: | Denis_N | Owned by: | san |
---|---|---|---|
Priority: | minor | Component: | БД изделий АДС |
Keywords: | Cc: |
Description (last modified by )
Необходимо изменить процедуру для работы интерфейса "Несоответствия"
drop procedure mismatchQuery; DELIMITER $$ CREATE PROCEDURE `mismatchQuery` (`min` INT, `max` INT, `searchName` VARCHAR(100), `searchSerial` VARCHAR(100), `searchComment` VARCHAR(10000)) BEGIN set @prevtotal := 0; set @mintotal := 0; select * from (select *, @mintotal as mintotal, @prevtotal := @mintotal - total as prevtotal from (select products.serial, history.uid, history.date, hist1.total from history inner join (select uid, count(uid) as total from history where ((`history`.type_write = 'mismatch' and (`history`.`status` is null or `history`.`status` = 'fail')) or (`history`.type_write = 'mismatch' and `history`.`status` = 'ok' and `history`.bond is null)) and comment is not null and comment != '' group by uid) as hist1 on history.uid = hist1.uid inner join products on products.uid = history.uid where (products.name like searchName and products.serial like searchSerial and history.comment like searchComment) and (history.uid, history.date) in (select uid, max(date) from history where ((`history`.type_write = 'mismatch' and (`history`.`status` is null or `history`.`status` = 'fail')) or (`history`.type_write = 'mismatch' and `history`.`status` = 'ok' and `history`.bond is null)) and history.comment like searchComment and comment is not null and comment != '' group by uid ) group by products.serial, history.uid, history.date, hist1.total order by history.date desc) as hist2 where (@mintotal := @minTotal + total)) as hust2 where hust2.mintotal > min and hust2.prevtotal < max; END$$ DELIMITER ;
Также необходимо создать новый столбец bond
в таблице history, который служит для связи несоответствий и их решений:
alter table history add column bond
int default null;
Change History (9)
comment:1 by , 16 months ago
Component: | Разное и всякое → БД изделий АДС |
---|---|
Type: | дефект → улучшение |
comment:2 by , 16 months ago
comment:3 by , 16 months ago
Summary: | Необходимо создать процедуру в MYSQL для работы ревизии → Необходимо создать процедуру в MYSQL для работы ревизии r312/base |
---|
comment:4 by , 16 months ago
Description: | modified (diff) |
---|
comment:5 by , 16 months ago
Summary: | Необходимо создать процедуру в MYSQL для работы ревизии r312/base → Необходимо создать процедуру в MYSQL, и новый столбец `bond` в таблице history для работы ревизии r312/base |
---|
comment:7 by , 16 months ago
Прочитал предложение тикета и у меня возникли вопросы.
Во-первых, насколько я вижу, значение столбца bond
в mismatchQuery
проверяется на NULL и на пустую строку (''
). Но bond
имеет числовой тип (int
)! Как его значение может быть строкой??? В чем смысл такого сравнения?
comment:8 by , 16 months ago
Посмотрел changeset:312/base. Насколько я понял, в столбце bond
предлагается хранить ссылку на запись истории (по ключу N
). Не следует ли, в таком случае, добавить также foreign key во избежание возможных неконсистентностей?
comment:9 by , 10 months ago
Description: | modified (diff) |
---|
Во-первых, насколько я вижу, значение столбца
bond
вmismatchQuery
проверяется на NULL и на пустую строку (''
). Ноbond
имеет числовой тип (int
)! Как его значение может быть строкой??? В чем смысл такого сравнения?
alx, исправил в описании
Посмотрел changeset:312/base. Насколько я понял, в столбце bond предлагается хранить ссылку на запись истории (по ключу N). Не следует ли, в таком случае, добавить также foreign key во избежание возможных неконсистентностей?
У себя на сервере в базе изменил. Создал тикет для san: https://trac.adc-line.ru/mc-04/ticket/1252#comment:1
In 312/base: