Opened 2 years ago
Closed 22 months ago
#1207 closed улучшение (fixed)
Необходимо создать процедуру в MYSQL, и новый столбец `bond` в таблице history для работы ревизии r312/base
| 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 (10)
comment:1 by , 2 years ago
| Component: | Разное и всякое → БД изделий АДС |
|---|---|
| Type: | дефект → улучшение |
comment:2 by , 2 years ago
comment:3 by , 2 years ago
| Summary: | Необходимо создать процедуру в MYSQL для работы ревизии → Необходимо создать процедуру в MYSQL для работы ревизии r312/base |
|---|
comment:4 by , 2 years ago
| Description: | modified (diff) |
|---|
comment:5 by , 2 years ago
| Summary: | Необходимо создать процедуру в MYSQL для работы ревизии r312/base → Необходимо создать процедуру в MYSQL, и новый столбец `bond` в таблице history для работы ревизии r312/base |
|---|
comment:7 by , 2 years ago
Прочитал предложение тикета и у меня возникли вопросы.
Во-первых, насколько я вижу, значение столбца bond в mismatchQuery проверяется на NULL и на пустую строку (''). Но bond имеет числовой тип (int)! Как его значение может быть строкой??? В чем смысл такого сравнения?
comment:8 by , 2 years ago
Посмотрел changeset:312/base. Насколько я понял, в столбце bond предлагается хранить ссылку на запись истории (по ключу N). Не следует ли, в таком случае, добавить также foreign key во избежание возможных неконсистентностей?
comment:9 by , 22 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
![[MC-04 logo]](/mc-04/chrome/site/logo.png)
In 312/base: