Personal Video Database

Русский => Поддержка => Тема начата: NewSky от 03 Мая 2009, 17:49:28

Название: Firebird Maestro и PVD
Отправлено: NewSky от 03 Мая 2009, 17:49:28
Вопос к "гуру"... Давно появилась необходимость, к определенным фильмам, массово присвоить определенное значение пользовательского поля. Средствами программы, увы, это сделать невозможно. Может быть есть возможность по средствам сабжа, "руками" применить нужные значения?

Пример: Есть фильмы с постерами, а все остальные, без постеров нужно пометить пользовательским полем. Это как то реально или даже не стоит париться?
Название: Re: Firebird Maestro и PVD
Отправлено: Reset от 03 Мая 2009, 21:59:45
Вопос к "гуру"... Давно появилась необходимость, к определенным фильмам, массово присвоить определенное значение пользовательского поля. Средствами программы, увы, это сделать невозможно. Может быть есть возможность по средствам сабжа, "руками" применить нужные значения?

Пример: Есть фильмы с постерами, а все остальные, без постеров нужно пометить пользовательским полем. Это как то реально или даже не стоит париться?
Реально-то это реально.
А ты с головной болью дружишь? Если нет, то лучше и не начинать.
Если дружишь, подумай, а тебе оно вообще надо? Если нет, то лучше и не начинать.
Если надо, то:
1. В таблице CUSTOM_FIELDS_MOVIES на вкладке Data ищешь своё поле и запомнаешь его cmfid.
2. Tools -> SQL Editor.
3.
UPDATE
  CUSTOM_VALUES_TYPE
SET
  "value" = new_value
WHERE
  "cmfid" = ID
CUSTOM_VALUES_TYPE заменяешь на CUSTOM_VALUES_INT, CUSTOM_VALUES_LONGSTR, CUSTOM_VALUES_REAL, CUSTOM_VALUES_SHORTSTR, в зависимости от типа пользовательского поля.
new_value заменяешь на число или строку в одинарных кавычках, или -1 для флагов.
ID заменяешь на запомненный в п.1 cmfid.
4. Execute query.

Ну вот надо оно тебе всё это? А?
Название: Re: Firebird Maestro и PVD
Отправлено: nostra от 04 Мая 2009, 00:46:01
Вообще-то NewSky по-моему имел ввиду что-то типа этого:
UPDATE
  CUSTOM_VALUES_TYPE
SET
  "value" = new_value
WHERE
  ("cmfid" = ID) AND
  (NOT EXISTS(SELECT FIRST 1 FROM IMAGES WHERE ("mid" = CUSTOM_VALUES_TYPE."mid") AND ("imgtype" = 0)))

Проблема только в том, что если польз. полю никогда не присваивалось значения, то и записи для этого фильма в CUSTOM_VALUES_TYPE не будет и соответсвенно даже если у фильма нет постеров, значение установлено не будет.
Название: Re: Firebird Maestro и PVD
Отправлено: NewSky от 04 Мая 2009, 03:02:38
Reset, nostra, Спасибо за оказанную помощь!
Но пока у меня вот такая ошибка:
SQL Error:  Dynamic SQL Error SQL error code = -104 Token unknown - line 7, column 30 FROM. Error Code: -104. can't format message 13:896 -- message file C:\Program Files\SQL Maestro Group\Firebird Maestro\firebird.msg not found The SQL: UPDATE
  CUSTOM_VALUES_TYPE
SET
  "value" = '5'
WHERE
  ("cmfid" = 36) AND
  (NOT EXISTS(SELECT FIRST 1 FROM IMAGES WHERE ("mid" = CUSTOM_VALUES_TYPE."mid") AND ("imgtype" = 0)))
;
На вот такой запрос:
UPDATE
  CUSTOM_VALUES_TYPE
SET
  "value" = '5'
WHERE
  ("cmfid" = 36) AND
  (NOT EXISTS(SELECT FIRST 1 FROM IMAGES WHERE ("mid" = CUSTOM_VALUES_TYPE."mid") AND ("imgtype" = 0)))

Напишу более подробно, может быть это поможет составить правильный запрос, а то пока тишина....

1) Необходимо присвоить значение ко всем фильмам не имеющим постера.
2) Пользовательское поле имеет cmfid 36 и customtype 5
3) Запись о нужном значении поля: CUSTOM_VALUES_SHORTSTR cmfid 36 value Нет Заглавного Постера

Цитировать
Проблема только в том, что если польз. полю никогда не присваивалось значения, то и записи для этого фильма в CUSTOM_VALUES_TYPE не будет и соответсвенно даже если у фильма нет постеров, значение установлено не будет.

Из этого ничего не понял... я один фильм руками пометил. Значит ли это, что теперь "полю присвоено значение" и имеются прочие отрибуты для того, что бы составить запрос и применить необходимые изменения?

УПС
Забыл сказать, что постеры хранятся ВНЕ базы (если это важно)...
Название: Re: Firebird Maestro и PVD
Отправлено: Reset от 04 Мая 2009, 06:53:11
Вообще-то NewSky по-моему имел ввиду что-то типа этого:
Беда оказалась бедее, чем я думал.
[off-topic]Но моя задница чувствовала это заранее :)[/off-topic]
Я про изображения совсем забыл, пока с пользовательскими полями разбирался. Звиняйте.

Цитировать
Проблема только в том, что если польз. полю никогда не присваивалось значения, то и записи для этого фильма в CUSTOM_VALUES_TYPE не будет и соответсвенно даже если у фильма нет постеров, значение установлено не будет.

Из этого ничего не понял... я один фильм руками пометил. Значит ли это, что теперь "полю присвоено значение" и имеются прочие отрибуты для того, что бы составить запрос и применить необходимые изменения?
И здесь моя мозга меня подвела. :(
Запрос сработает только для тех фильмов, у которых в этом поле уже что-нибудь есть. Если поле для какого-то фильма пустое, то оно так и останется пустым.

Тебя должно было бы спасти следующее:
INSERT INTO
  CUSTOM_VALUES_SHORTSTR
  ("cmfid", "mid", "value")
  SELECT
    '36' as "cmfid", "mid", 'Нет Заглавного Постера' as "value"
  FROM
    MOVIES
  WHERE
    "mid" NOT IN (SELECT "mid" FROM CUSTOM_VALUES_SHORTSTR WHERE "cmfid" = '36') AND
    "visible" = -1 AND
    (NOT EXISTS(SELECT FIRST 1 * FROM IMAGES WHERE ("mid" = MOVIES."mid") AND ("imgtype" = 0)));
 
UPDATE
  CUSTOM_VALUES_SHORTSTR
SET
  "value" = 'Нет Заглавного Постера'
WHERE
  ("cmfid" = 36) AND
  (NOT EXISTS(SELECT FIRST 1 * FROM IMAGES WHERE ("mid" = CUSTOM_VALUES_SHORTSTR."mid") AND ("imgtype" = 0)));

UPDATE
  CUSTOM_VALUES_SHORTSTR
SET
  "value" = ''
WHERE
  ("cmfid" = 36) AND
  (EXISTS(SELECT FIRST 1 * FROM IMAGES WHERE ("mid" = CUSTOM_VALUES_SHORTSTR."mid") AND ("imgtype" = 0))); 
Но не спасает. База обновляется, а программа этого почему-то не видит. Я не смог разобраться, в чем причина.  :(

И тут у меня родилось предложение к nostra. Что если в программу добавить что-то вроде создания триггеров? Пользователь задаёт условия, например, как в расширенном поиске, и указывает, какое поле должно получить какое значение при выполнении или невыполнениии этих условий. Другой вопрос, многим ли это нужно?

ЗЫ: NewSky, бросай это дело, пока нас с ума не свёл ;)
Название: Re: Firebird Maestro и PVD
Отправлено: moran от 04 Мая 2009, 07:25:58
а вы генераторы, после вставки записей обновляете??? и применяете транзакцию?

UPD:

Выполнил запросы, все записи добавились, и в программе все видно... единственное после каждого запроса вставил commit;
и запускал все это как скрипт...
Название: Re: Firebird Maestro и PVD
Отправлено: NewSky от 04 Мая 2009, 10:18:42
Цитировать
ЗЫ: NewSky, бросай это дело, пока нас с ума не свёл
Да я бы рад бросить, но оч. нужно :( Да и неизвестно, будет ли поддержка массового обновления пользовательских полей, а из-за этого вся работа встала.
TO MORAN:
А не подскажешь по подробней, на примере, что и как нужно сделать что бы сделать, то о чем речь шла чуть выше?
Название: Re: Firebird Maestro и PVD
Отправлено: moran от 04 Мая 2009, 10:44:52
TO MORAN:
А не подскажешь по подробней, на примере, что и как нужно сделать что бы сделать, то о чем речь шла чуть выше?

А ничего сверхестественного.
1. Создал пользовательское поле "Нет постера" типа "короткий текст".
2. Залез в базу в таблице "CUSTOM_FIELDS_MOVIES" посмотрел "cmfid" созданного поля (он оказался 40).
3. В запросе исправил 36 на 40 и в конце каждого запроса поставил commit;, и исправил "Нет Заглавного Постера" на "!!!", т.к. IB Expert плохо понимает Unicode, хотя может и не разобрался еще с ним.

INSERT INTO
  CUSTOM_VALUES_SHORTSTR
  ("cmfid", "mid", "value")
  SELECT
    '40' as "cmfid", "mid", '!!!' as "value"
  FROM
    MOVIES
  WHERE
    "mid" NOT IN (SELECT "mid" FROM CUSTOM_VALUES_SHORTSTR WHERE "cmfid" = '40') AND
    "visible" = -1 AND
    (NOT EXISTS(SELECT FIRST 1 * FROM IMAGES WHERE ("mid" = MOVIES."mid") AND ("imgtype" = 0)));
 
commit;

UPDATE
  CUSTOM_VALUES_SHORTSTR
SET
  "value" = '!!!'
WHERE
  ("cmfid" = 40) AND
  (NOT EXISTS(SELECT FIRST 1 * FROM IMAGES WHERE ("mid" = CUSTOM_VALUES_SHORTSTR."mid") AND ("imgtype" = 0)));

commit;

UPDATE
  CUSTOM_VALUES_SHORTSTR
SET
  "value" = ''
WHERE
  ("cmfid" = 40) AND
  (EXISTS(SELECT FIRST 1 * FROM IMAGES WHERE ("mid" = CUSTOM_VALUES_SHORTSTR."mid") AND ("imgtype" = 0)));

commit;

4. Все вставил в редактор скриптов, Maesto под рукой нету ищи что то подобное (Script), и запустил.
Все...
Название: Re: Firebird Maestro и PVD
Отправлено: NewSky от 04 Мая 2009, 10:54:44
Дело в том, что это пользовательское поле memo и там не только это значение нужно, это только одно значение "Нет Заглавного Постера", а нужно ввести много чего "таким макаром" и они не должны затираться. Само значение строки я думаю могу сменить в программе на латиницу, это не проблема, потом в программе же переименую. Основная сложность в том, что повторюсь, в это поле нужно добавить не одно значение.
UPD
Точнее не memo а select list
UPD2 To Moran:
Спасибо, твой скрипт отлично сработал. Обновилось все, что не содержит постеры, НО (моя вина, сразу детали не описал...) все значения пользовательского поля "Доп. данные" перезаписались на указанное (в данном случае !!!) а возможно, как то не перзаписать, а ДОБАВИТЬ в это поле существующее значение (в данном случае "Нет Заглавного Постера)?
Название: Re: Firebird Maestro и PVD
Отправлено: moran от 05 Мая 2009, 03:15:42
To NewSky
У тебя в этом поле есть значения перечисляемые через запятую, типа "Значение 1, Нет постера, Значение 2", или просто список с параметрами "Значение 1", "Нет постера", "Значение 2"???
Название: Re: Firebird Maestro и PVD
Отправлено: NewSky от 05 Мая 2009, 03:30:32
To NewSky
У тебя в этом поле есть значения перечисляемые через запятую, типа "Значение 1, Нет постера, Значение 2", или просто список с параметрами "Значение 1", "Нет постера", "Значение 2"???
Через запятую.
А как можно получить список "Значение 1", "Нет постера", "Значение 2" ? Это какоой тип поля дает такой вариант?
А вообщето... вот скрин, может  у меня второй вариант, что-то я не воткнусь. Это раскрытый список селект листа поля "Доп. данные"
(http://s53.radikal.ru/i140/0905/d9/2ffb365876c1.bmp)
Название: Re: Firebird Maestro и PVD
Отправлено: moran от 05 Мая 2009, 03:38:05
To NewSky
У тебя в этом поле есть значения перечисляемые через запятую, типа "Значение 1, Нет постера, Значение 2", или просто список с параметрами "Значение 1", "Нет постера", "Значение 2"???
Через запятую.
А как можно получить список "Значение 1", "Нет постера", "Значение 2" ? Это какоой тип поля дает такой вариант?
А вообщето... вот скрин, может  у меня второй вариант, что-то я не воткнусь. Это раскрытый список селект листа поля "Доп. данные"
(http://s53.radikal.ru/i140/0905/d9/2ffb365876c1.bmp)


ты определись, у тебя "select list" или "Multiselect list" по скрину "Multiselect list"....
Название: Re: Firebird Maestro и PVD
Отправлено: NewSky от 05 Мая 2009, 03:43:03
Точно... Multiselect list
Название: Re: Firebird Maestro и PVD
Отправлено: moran от 05 Мая 2009, 04:08:12
В первом запросе добавляются новые записи к тем фильмам у которых нет постера, при этом остаются другие пометки для этого поля.
Во втором (старом третьем), удаляются те записи у которых постер появился, но старое значение было "Нет постера".
Старый второй запрос я убрал, т.к. обновлять запись где значение "Нет постера", на значение "Нет постера" не вижу смысла

Не забудь исправить значение '40' и '!!!' на свои...

UPD
Кстати для эпизодов сериала, тоже проставляется метка, можно что бы не проставлялось...

INSERT INTO
  CUSTOM_VALUES_SHORTSTR
  ("cmfid", "mid", "value")
  SELECT
    '40' as "cmfid", "mid", '!!!' as "value"
  FROM
    MOVIES
  WHERE
    "mid" NOT IN (SELECT "mid" FROM CUSTOM_VALUES_SHORTSTR WHERE "cmfid" = '40' AND "value" = '!!!') AND
    "visible" = -1 AND
    (NOT EXISTS(SELECT FIRST 1 * FROM IMAGES WHERE ("mid" = MOVIES."mid") AND ("imgtype" = 0)));

commit;

DELETE FROM
  CUSTOM_VALUES_SHORTSTR
WHERE
  ("cmfid" = 40) AND ("value" = '!!!') and
  (EXISTS(SELECT FIRST 1 * FROM IMAGES WHERE ("mid" = CUSTOM_VALUES_SHORTSTR."mid") AND ("imgtype" = 0)));
commit;

[off-topic]старый второй запрос
UPDATE
  CUSTOM_VALUES_SHORTSTR
SET
  "value" = '!!!'
WHERE
  ("cmfid" = 40) AND ("value" = '!!!') and
  (NOT EXISTS(SELECT FIRST 1 * FROM IMAGES WHERE ("mid" = CUSTOM_VALUES_SHORTSTR."mid") AND ("imgtype" = 0)));
commit;
[/off-topic]
Название: Re: Firebird Maestro и PVD
Отправлено: moran от 05 Мая 2009, 04:19:12
Что бы эпизоды не попадали в список "Баз постерных", первый запрос...

INSERT INTO
  CUSTOM_VALUES_SHORTSTR
  ("cmfid", "mid", "value")
  SELECT
    '40' as "cmfid", "mid", '!!!' as "value"
  FROM
    MOVIES
  WHERE
    "mid" NOT IN (SELECT "mid" FROM CUSTOM_VALUES_SHORTSTR WHERE "cmfid" = '40' AND "value" = '!!!') AND
    "visible" = -1 AND "epid" is NULL AND
    (NOT EXISTS(SELECT FIRST 1 * FROM IMAGES WHERE ("mid" = MOVIES."mid") AND ("imgtype" = 0)));

commit;
Название: Re: Firebird Maestro и PVD
Отправлено: NewSky от 05 Мая 2009, 04:30:17
Большое спасибо, Moran!
Почти все как надо получилось.
Единственное (ты предупреждал) кириллица нифига не отображается в ПРОГРАММЕ :( В базе записи нормально, присутствуют, а в программе не отображаются. Вот бы с этим еще, что-то придумать, а то странно, если в программе на кириллице написать - нет проблем, а вот таким если способом, то не читается

После запуска скрипта, в пользовательском поле "Доп. данные" появилось новое пустое значение и применяемое значение, там где не было никакой записи, имеет вид: , новое значение То есть, начинается с запятой. Нельзя ли как то, что бы пустое значение не появлялось ну и без запятой в начале, если новое значение единственное?
(http://s39.radikal.ru/i084/0905/04/18b15d6e205d.bmp) (http://s47.radikal.ru/i116/0905/c0/5ac2b8b43135.bmp)

Название: Re: Firebird Maestro и PVD
Отправлено: NewSky от 05 Мая 2009, 04:38:28
Да, походу он ко всем записям применил это новое, пустое значение:
(http://s61.radikal.ru/i172/0905/6e/8ef5048cd650.bmp)
Название: Re: Firebird Maestro и PVD
Отправлено: moran от 05 Мая 2009, 04:46:55
Да, походу он ко всем записям применил это новое, пустое значение:
(http://s61.radikal.ru/i172/0905/6e/8ef5048cd650.bmp)


Пустое значение это значение написанное на кириллице в скрипте, просто надо скрипт сохранить в кодировке UTF и открыть в редакторе скриптов, и запустить, в редакторе будут кракозябры, но скрипт выполнится нормально, покранейней мере в IB Expert так. Скоро сделаю скрипты на скриншоты, CD обложки и Box обложки... Хотя там достаточно поменять типы изображений и название пометок...
Название: Re: Firebird Maestro и PVD
Отправлено: moran от 05 Мая 2009, 05:07:28
Итак, окончательные варианты скриптов:
Постеры (не помечаются эпизоды):
/*$$IBEC$$ ПОСТЕРЫ $$IBEC$$*/

INSERT INTO
  CUSTOM_VALUES_SHORTSTR
  ("cmfid", "mid", "value")
  SELECT
    '40' as "cmfid", "mid", 'Нет Постера' as "value"
  FROM
    MOVIES
  WHERE
    "mid" NOT IN (SELECT "mid" FROM CUSTOM_VALUES_SHORTSTR WHERE "cmfid" = '40' AND "value" = 'Нет постера') AND
    "visible" = -1 AND "epid" is NULL AND
    (NOT EXISTS(SELECT FIRST 1 * FROM IMAGES WHERE ("mid" = MOVIES."mid") AND ("imgtype" = 0)));

commit;

DELETE FROM
  CUSTOM_VALUES_SHORTSTR
WHERE
  ("cmfid" = 40) AND ("value" = 'Нет постера') and
  (EXISTS(SELECT FIRST 1 * FROM IMAGES WHERE ("mid" = CUSTOM_VALUES_SHORTSTR."mid") AND ("imgtype" = 0)));
commit;

Скриншоты (помечаются эпизоды):
/*$$IBEC$$ СКРИНШОТЫ $$IBEC$$*/

INSERT INTO
  CUSTOM_VALUES_SHORTSTR
  ("cmfid", "mid", "value")
  SELECT
    '40' as "cmfid", "mid", 'Нет Скриншотов' as "value"
  FROM
    MOVIES
  WHERE
    "mid" NOT IN (SELECT "mid" FROM CUSTOM_VALUES_SHORTSTR WHERE "cmfid" = '40' AND "value" = 'Нет Скриншотов') AND
    "visible" = -1 AND
    (NOT EXISTS(SELECT FIRST 1 * FROM IMAGES WHERE ("mid" = MOVIES."mid") AND ("imgtype" = 1)));

commit;

DELETE FROM
  CUSTOM_VALUES_SHORTSTR
WHERE
  ("cmfid" = 40) AND ("value" = 'Нет Скриншотов') and
  (EXISTS(SELECT FIRST 1 * FROM IMAGES WHERE ("mid" = CUSTOM_VALUES_SHORTSTR."mid") AND ("imgtype" = 1)));
commit;

CD Обложка (не помечаются эпизоды):
/*$$IBEC$$ CD ОБЛОЖКИ $$IBEC$$*/

INSERT INTO
  CUSTOM_VALUES_SHORTSTR
  ("cmfid", "mid", "value")
  SELECT
    '40' as "cmfid", "mid", 'Нет CD Обложки' as "value"
  FROM
    MOVIES
  WHERE
    "mid" NOT IN (SELECT "mid" FROM CUSTOM_VALUES_SHORTSTR WHERE "cmfid" = '40' AND "value" = 'Нет CD Обложки') AND
    "visible" = -1 AND "epid" is NULL AND
    (NOT EXISTS(SELECT FIRST 1 * FROM IMAGES WHERE ("mid" = MOVIES."mid") AND ("imgtype" = 3)));

commit;

DELETE FROM
  CUSTOM_VALUES_SHORTSTR
WHERE
  ("cmfid" = 40) AND ("value" = 'Нет CD Обложки') and
  (EXISTS(SELECT FIRST 1 * FROM IMAGES WHERE ("mid" = CUSTOM_VALUES_SHORTSTR."mid") AND ("imgtype" = 3)));
commit;

Box Обложка (не помечаются эпизоды):
/*$$IBEC$$ Box ОБЛОЖКИ $$IBEC$$*/

INSERT INTO
  CUSTOM_VALUES_SHORTSTR
  ("cmfid", "mid", "value")
  SELECT
    '40' as "cmfid", "mid", 'Нет Box Обложки' as "value"
  FROM
    MOVIES
  WHERE
    "mid" NOT IN (SELECT "mid" FROM CUSTOM_VALUES_SHORTSTR WHERE "cmfid" = '40' AND "value" = 'Нет Box Обложки') AND
    "visible" = -1 AND "epid" is NULL AND
    (NOT EXISTS(SELECT FIRST 1 * FROM IMAGES WHERE ("mid" = MOVIES."mid") AND ("imgtype" = 2)));

commit;

DELETE FROM
  CUSTOM_VALUES_SHORTSTR
WHERE
  ("cmfid" = 40) AND ("value" = 'Нет Box Обложки') and
  (EXISTS(SELECT FIRST 1 * FROM IMAGES WHERE ("mid" = CUSTOM_VALUES_SHORTSTR."mid") AND ("imgtype" = 2)));
commit;

Если хотим видеть русские буквы в программе, сохраняем скрипт в кодировке UTF и открываем в редакторе скриптов.

Не забываем изменять значение "40", "Нет Постера", "Нет Скриншотов", "Нет CD Обложки", "Нет Box Обложки" на свои.
Название: Re: Firebird Maestro и PVD
Отправлено: NewSky от 05 Мая 2009, 05:09:03
Ну всё, с меня пиво :) ОГРОМНОЕ тебе спасибо Moran! Все заработало! Сохранил скрипт в кодировки UTF-8 (без BOM) и все зачиталось в программе!

Я вот хотел спросить на будущее... сейчас, в данном случае, основным условием было "нет постеров" а можно будет обратится позже с вопросом о подобном действии, но основной критерий будет "содержание в програмном поле (скорее всего "место расположение") определенного значение и применение к таким фильмам пользовательского значения в пользовательское поле"

Поясню, зачем это нужно и почему так:
Например: "Заглавный постер" у меня ко всем фильмам сделан по одному стандарту, но он есть не ко всем фильмам, есть фильмы, для которых нет описания на Кинопоиске, каких то нет на IMDB, у каких то постеров нет вертикальных постеров и многое, много другое, что нужно отобразить в программе. Я делаю так: группирую фильмы по тому критерию, который необходим, выделяю все фильмы и запускаю массовый редактор и в нем использую поле "Расположение носителя" потому, как это единственное програмное поле, которое у меня не задействовано. Но соответственно, это только одно значение, а к одному фильму их может быть несколько и тогда они просто затрутся, для этого я и попросил помощь, как "руками" внести запись отталкиваясь от ОСНОВНОГО критерия. В данном случае это было "нет постера" а в дальнейшем, хотелось бы снова попросить помощи о запросе, где основным критерием будет запись в програмном поле "Расположение носителя"

Еще раз, большое спасибо за помощь, Moran! И Resetу большое спасибо, за основу запроса и за постоянную помощь всем на этом форуме!
Название: Re: Firebird Maestro и PVD
Отправлено: moran от 05 Мая 2009, 05:15:54
Пиши алгоритм запроса, а там разберемся, можно или нет...
Название: Re: Firebird Maestro и PVD
Отправлено: NewSky от 05 Мая 2009, 05:24:05
Добавить запись "ххххх" в пользовательское поле multiselect list "Доп. данные" для тех фильмов, которые имеют запись в програмном поле "Расположение носителя" равную "yyyyy". OR имеют любую запись в програмном поле "расположение носителя"
Название: Re: Firebird Maestro и PVD
Отправлено: moran от 05 Мая 2009, 05:58:38
Добавить запись "ххххх" в пользовательское поле multiselect list "Доп. данные" для тех фильмов, которые имеют запись в програмном поле "Расположение носителя" равную "yyyyy". OR имеют любую запись в програмном поле "расположение носителя"

Добавляет в пользовательское поле с ID '44' значение 'XXXXXX' если в поле 'расположение носителя' есть запись 'YYYYYY', эпизоды не учитываются. что бы учитывались убрать 'AND "epid" is NULL'


INSERT INTO
  CUSTOM_VALUES_SHORTSTR
  ("cmfid", "mid", "value")
  SELECT
    '44' as "cmfid", "mid", 'XXXXXX' as "value"
  FROM
    MOVIES
  WHERE
    "mid" NOT IN (SELECT "mid" FROM CUSTOM_VALUES_SHORTSTR WHERE "cmfid" = '44' AND "value" = 'XXXXXX') AND
    "visible" = -1 AND "epid" is NULL AND
    (EXISTS(SELECT FIRST 1 * FROM locations WHERE (locations."locid" = movies."location") AND locations."value" = 'YYYYYY'));
commit;

UPD

Удаляет значение 'XXXXXX' из пользовательского поля с ID '44' если в 'расположении носителя' нет значения 'YYYYYY'
DELETE FROM
  CUSTOM_VALUES_SHORTSTR
WHERE
  ("cmfid" = 44) AND ("value" = 'XXXXXX') and
  (NOT EXISTS(SELECT FIRST 1 * FROM locations, movies WHERE (locations."locid" = movies."location") AND locations."value" = 'YYYYYY'));
commit;
Название: Re: Firebird Maestro и PVD
Отправлено: NewSky от 05 Мая 2009, 06:33:24
сорри чОртов Punto :) в скрипте была очепятка, вот и не сработал.
Не перестаю благодарить тебя, Moran! Спасибо большое!!!
Название: Re: Firebird Maestro и PVD
Отправлено: NewSky от 21 Мая 2010, 12:58:51
Очередное извращение понадобилось :) Может знающие люди подскажут, возможно/не возможно, а ЕСЛИ возможно, то как?

Данные:
Все фильмы в базе в поле "Расположение носителя" имеют данные о файле, сам файл имеет примерно такой вид:
H:\films5\Двойной КОПец (2010)\Cop_Out_(2010)(two)(dvdrip).avi
Где, папка с фильмом имеет имя=Переведенное Название (год), а сам файл=Original_Title_(year)(voice)(quality).расширение.
Voice - это следовательно информация по озвучке. Имеются совсем немного значений:
(one)-одноголосый
(two)-двухголосый
(multi)-многоголосый
(multi_d)-Многоголосый (Дубляж)
(multi_z)-Многоголосый (Закадровый)
(orig)-Язык оригинала
(not)-Перевод не требуется
Задача:
Необходим скрипт который бы при наличии указанных выше данных в поле "Расположение носителя" заполнил бы поле "Перевод" в карточке фильма к первой (если не одна) звуковой дорожке.
Например:
H:\films5\Двойной КОПец (2010)\Cop_Out_(2010)(two)(dvdrip).avi получаем, что в поле "Перевод" нужно внести слово "Двухголосый" и так далее.
Соответственно, сколько есть вариантов озвучки из данных имени файлов, столько раз и нужно обработать базу, меняя данные искомые и те, которые нужно ввести в поле "Перевод".
Возможно подобное?