В прикрепленных файлах находятся скрипты процедур, которые необходимо открыть в редакторе скриптов в любом менеджере баз Firebird. Выполняем скрипт, в базе появляется соответствующая процедура, выполнив которую можно получить соответствующий результат.
p.s. Предлагайте свои алгоритмы для всяческих задач. А там посмотрим что из этого выйдет...
1. Процедура отмечающая все фильмы где нет постера, в виде метки используется пользовательское поле, с произвольным текстом
SET TERM ^ ;
CREATE OR ALTER PROCEDURE USER_MARK_POSTERS (
value_text varchar(100),
cmfid_id integer)
as
begin
/*$$IBEC$$ ПОСТЕРЫ $$IBEC$$*/
INSERT INTO
CUSTOM_VALUES_SHORTSTR
("cmfid", "mid", "value")
SELECT
:CMFID_ID as "cmfid", "mid", :VALUE_TEXT as "value"
FROM
MOVIES
WHERE
"mid" NOT IN (SELECT "mid" FROM CUSTOM_VALUES_SHORTSTR WHERE "cmfid" = :CMFID_ID AND "value" = :VALUE_TEXT) AND
"visible" = -1 AND "epid" is NULL AND
(NOT EXISTS(SELECT FIRST 1 * FROM IMAGES WHERE ("mid" = MOVIES."mid") AND ("imgtype" = 0)));
DELETE FROM
CUSTOM_VALUES_SHORTSTR
WHERE
("cmfid" = :CMFID_ID) AND ("value" = :VALUE_TEXT) and
(EXISTS(SELECT FIRST 1 * FROM IMAGES WHERE ("mid" = CUSTOM_VALUES_SHORTSTR."mid") AND ("imgtype" = 0)));
suspend;
end^
SET TERM ; ^
COMMENT ON PROCEDURE USER_MARK_POSTERS IS
'Процедура отмечающая все фильмы где нет постера, в виде метки используется пользовательское поле, с произвольным текстом';
DESCRIBE PARAMETER VALUE_TEXT PROCEDURE USER_MARK_POSTERS
'Текст вносимый в пользовательское поле';
DESCRIBE PARAMETER CMFID_ID PROCEDURE USER_MARK_POSTERS
'ID пользовательского поля в которое вносим значение VALUE_TEXT';
GRANT SELECT,INSERT,DELETE ON CUSTOM_VALUES_SHORTSTR TO PROCEDURE USER_MARK_POSTERS;
GRANT SELECT ON MOVIES TO PROCEDURE USER_MARK_POSTERS;
GRANT SELECT ON IMAGES TO PROCEDURE USER_MARK_POSTERS;
GRANT EXECUTE ON PROCEDURE USER_MARK_POSTERS TO SYSDBA;
2. Процедура отмечающая все фильмы где нет скриншотов, в виде метки используется пользовательское поле, с произвольным текстом
SET TERM ^ ;
CREATE OR ALTER PROCEDURE USER_MARK_SCREENSHOTS (
value_text varchar(100),
cmfid_id integer)
as
begin
/*$$IBEC$$ СКРИНШОТЫ $$IBEC$$*/
INSERT INTO
CUSTOM_VALUES_SHORTSTR
("cmfid", "mid", "value")
SELECT
:CMFID_ID as "cmfid", "mid", :VALUE_TEXT as "value"
FROM
MOVIES
WHERE
"mid" NOT IN (SELECT "mid" FROM CUSTOM_VALUES_SHORTSTR WHERE "cmfid" = :CMFID_ID AND "value" = :VALUE_TEXT) AND
"visible" = -1 AND
(NOT EXISTS(SELECT FIRST 1 * FROM IMAGES WHERE ("mid" = MOVIES."mid") AND ("imgtype" = 1)));
DELETE FROM
CUSTOM_VALUES_SHORTSTR
WHERE
("cmfid" = :CMFID_ID) AND ("value" = :VALUE_TEXT) and
(EXISTS(SELECT FIRST 1 * FROM IMAGES WHERE ("mid" = CUSTOM_VALUES_SHORTSTR."mid") AND ("imgtype" = 1)));
suspend;
end^
SET TERM ; ^
COMMENT ON PROCEDURE USER_MARK_SCREENSHOTS IS
'Процедура отмечающая все фильмы где нет скриншотов, в виде метки используется пользовательское поле, с произвольным текстом';
DESCRIBE PARAMETER VALUE_TEXT PROCEDURE USER_MARK_SCREENSHOTS
'Текст вносимый в пользовательское поле';
DESCRIBE PARAMETER CMFID_ID PROCEDURE USER_MARK_SCREENSHOTS
'ID пользовательского поля в которое вносим значение VALUE_TEXT';
GRANT SELECT,INSERT,DELETE ON CUSTOM_VALUES_SHORTSTR TO PROCEDURE USER_MARK_SCREENSHOTS;
GRANT SELECT ON MOVIES TO PROCEDURE USER_MARK_SCREENSHOTS;
GRANT SELECT ON IMAGES TO PROCEDURE USER_MARK_SCREENSHOTS;
GRANT EXECUTE ON PROCEDURE USER_MARK_SCREENSHOTS TO SYSDBA;
3. Процедура отмечающая все фильмы где нет CD обложек, в виде метки используется пользовательское поле, с произвольным текстом
SET TERM ^ ;
CREATE OR ALTER PROCEDURE USER_MARK_CD_COVER (
value_text varchar(100),
cmfid_id integer)
as
begin
/*$$IBEC$$ CD ОБЛОЖКИ $$IBEC$$*/
INSERT INTO
CUSTOM_VALUES_SHORTSTR
("cmfid", "mid", "value")
SELECT
:CMFID_ID as "cmfid", "mid", :VALUE_TEXT as "value"
FROM
MOVIES
WHERE
"mid" NOT IN (SELECT "mid" FROM CUSTOM_VALUES_SHORTSTR WHERE "cmfid" = :CMFID_ID AND "value" = :VALUE_TEXT) AND
"visible" = -1 AND "epid" is NULL AND
(NOT EXISTS(SELECT FIRST 1 * FROM IMAGES WHERE ("mid" = MOVIES."mid") AND ("imgtype" = 3)));
DELETE FROM
CUSTOM_VALUES_SHORTSTR
WHERE
("cmfid" = :CMFID_ID) AND ("value" = :VALUE_TEXT) and
(EXISTS(SELECT FIRST 1 * FROM IMAGES WHERE ("mid" = CUSTOM_VALUES_SHORTSTR."mid") AND ("imgtype" = 3)));
suspend;
end^
SET TERM ; ^
COMMENT ON PROCEDURE USER_MARK_CD_COVER IS
'Процедура отмечающая все фильмы где нет CD обложек, в виде метки используется пользовательское поле, с произвольным текстом';
DESCRIBE PARAMETER VALUE_TEXT PROCEDURE USER_MARK_CD_COVER
'Текст вносимый в пользовательское поле';
DESCRIBE PARAMETER CMFID_ID PROCEDURE USER_MARK_CD_COVER
'ID пользовательского поля в которое вносим значение VALUE_TEXT';
GRANT SELECT,INSERT,DELETE ON CUSTOM_VALUES_SHORTSTR TO PROCEDURE USER_MARK_CD_COVER;
GRANT SELECT ON MOVIES TO PROCEDURE USER_MARK_CD_COVER;
GRANT SELECT ON IMAGES TO PROCEDURE USER_MARK_CD_COVER;
GRANT EXECUTE ON PROCEDURE USER_MARK_CD_COVER TO SYSDBA;
4. Процедура отмечающая все фильмы где нет BOX обложки, в виде метки используется пользовательское поле, с произвольным текстом
SET TERM ^ ;
CREATE OR ALTER PROCEDURE USER_MARK_BOX_COVER (
value_text varchar(100),
cmfid_id integer)
as
begin
/*$$IBEC$$ Box ОБЛОЖКИ $$IBEC$$*/
INSERT INTO
CUSTOM_VALUES_SHORTSTR
("cmfid", "mid", "value")
SELECT
:CMFID_ID as "cmfid", "mid", :VALUE_TEXT as "value"
FROM
MOVIES
WHERE
"mid" NOT IN (SELECT "mid" FROM CUSTOM_VALUES_SHORTSTR WHERE "cmfid" = :CMFID_ID AND "value" = :VALUE_TEXT) AND
"visible" = -1 AND "epid" is NULL AND
(NOT EXISTS(SELECT FIRST 1 * FROM IMAGES WHERE ("mid" = MOVIES."mid") AND ("imgtype" = 2)));
DELETE FROM
CUSTOM_VALUES_SHORTSTR
WHERE
("cmfid" = :CMFID_ID) AND ("value" = :VALUE_TEXT) and
(EXISTS(SELECT FIRST 1 * FROM IMAGES WHERE ("mid" = CUSTOM_VALUES_SHORTSTR."mid") AND ("imgtype" = 2)));
suspend;
end^
SET TERM ; ^
COMMENT ON PROCEDURE USER_MARK_BOX_COVER IS
'Процедура отмечающая все фильмы где нет BOX обложки, в виде метки используется пользовательское поле, с произвольным текстом';
DESCRIBE PARAMETER VALUE_TEXT PROCEDURE USER_MARK_BOX_COVER
'Текст вносимый в пользовательское поле';
DESCRIBE PARAMETER CMFID_ID PROCEDURE USER_MARK_BOX_COVER
'ID пользовательского поля в которое вносим значение VALUE_TEXT';
GRANT SELECT,INSERT,DELETE ON CUSTOM_VALUES_SHORTSTR TO PROCEDURE USER_MARK_BOX_COVER;
GRANT SELECT ON MOVIES TO PROCEDURE USER_MARK_BOX_COVER;
GRANT SELECT ON IMAGES TO PROCEDURE USER_MARK_BOX_COVER;
GRANT EXECUTE ON PROCEDURE USER_MARK_BOX_COVER TO SYSDBA;
[вложение удалено Администратором]