|
TECDOC рвет мозги - помогите !!!!
|
|||
---|---|---|---|
#18+
Доброго времени суток уважаемые коллеги!!! В топике с /topic/561158&hl=subrange уважемый Бунаков Михаил Петрович дал инфу для размышления про _CTM поля …...ясно что они есть суть применяемости или не применяемости того или иного объекта (модели авто, артикула и т. д.) для той или иной страны. По факту имеем таблицу TOF_COUNTRIES с полем COU_CTM где хоронятся «метрики» стран в бинарном виде. Также было получено, через снифферы, инфа о том, что в Transbase sql есть build функция типа *_CTM subrange(210 cast integer) = 1 …...и кроме того, через чтение мета структуры любых из таблиц, где есть поля *_CTM, мы видим, что это bit поле. т. е. получается, что subrange в битовом поле выберет, скажим, 210 бит и отдаст нам его как int. Но как и многие, я перегнал базу в Microsoft Sql Server и как известно, в mssql есть binary(n). (или varbinary(n) ) . Конечно держать *_CTM в varchar(n) или char(n) проще в обработке. Достаточно просто определить наличие или не наличие в той или иной позиции string-а 1 или 0. Но имеем куча проблем. База раздувается до больших размеров и скорость обработки из-за поиска субстринга естественно падает. Т. е. нужно держать *_CTM поля в виде byte массива. Но как это хозяйство обрабатывать? Ведь нету в mssql аналогов subrange для работы с byte массивом. Как кто решал эту проблему у себя, при перегонке данных в mssql или mysql ….. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2009, 13:41 |
|
TECDOC рвет мозги - помогите !!!!
|
|||
---|---|---|---|
#18+
coolged, игнорировал эти поля напрочь ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2009, 18:38 |
|
TECDOC рвет мозги - помогите !!!!
|
|||
---|---|---|---|
#18+
elisay, Позвольте с Вами не согласится, при переборе объектов таблиц с разными признаками привязок к метрикам стран получаются разные наборы. Этого факта достаточно, чтобы сделать вывод, что поля нужные и обойтись без них никак нельзя. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2009, 20:14 |
|
TECDOC рвет мозги - помогите !!!!
|
|||
---|---|---|---|
#18+
coolgedНо как и многие, я перегнал базу в Microsoft Sql Server и как известно, в mssql есть binary(n). (или varbinary(n) ) . а с этими полями, не получается? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.06.2009, 16:02 |
|
TECDOC рвет мозги - помогите !!!!
|
|||
---|---|---|---|
#18+
MSSQL 2008 + Tecdoc 4 квартал 2009 г: Много перерыл, адекватных решений не нашел, поэтому решал в лоб при помощи SUBSTRING. Синтаксис SUBSTRING ( expression, start, length ). Аргументы expression Строка символов, двоичная строка, текст, изображение, столбец или выражение expression, включающее столбец. Не следует использовать выражения, включающие статистические функции. start Целое число, определяющее позицию начала подстроки. Аргумент start может иметь тип bigint. length Положительное целое число, которое указывает, сколько символов или байтов выражения expression будет возвращено. Если значение аргумента length отрицательно, то возвращается ошибка. Аргумент length может иметь тип bigint. Непосредственно решение Данные у меня хранятся в varbinary (mssql их отображает в шестнадцатеричном виде). Следовательно 1 байт - это 2 символа (FF = 255 = 1 байт). Чтобы выдрать нужный бит (в моём случае 185-ый), вычитаем 1 из 185, делим на 2, округляем вниз и прибавляем 2 (первые 2 байта 0x0b системные): (185 - 1) / 2 + 2 = 94. Т.о. start = 94. length = 1 (байт). Для проверки наличия бита используем бинарную операцию & ("И"). Результат SUBSTRING вернёт 1 байт (2 шестнадцатеричных символа). Т.к. нас интересует первый, то операцию & выполняем с числом 0x10 = 16 (для второго символа надо было бы использовать число 0x01 = 1). Результат можно проверить как > 0 или равный 16 и 1 соответственно. Получаем условие вида: CODEWHERE SUBSTRING(*_CTM, 94, 1) & 16 > 0 PS: всё было бы гораздо проще, но бинарные операции в MSSQL не допускают использование двух varbinary, так что если надо проверять сразу несколько стран, то это будет геморойно, ведь bigint ограничен 8 байтами. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2009, 04:57 |
|
TECDOC рвет мозги - помогите !!!!
|
|||
---|---|---|---|
#18+
В MySQL аналогичное решение с SUBSTRING, только немного проще ... |
|||
:
Нравится:
Не нравится:
|
|||
04.11.2010, 15:37 |
|
TECDOC рвет мозги - помогите !!!!
|
|||
---|---|---|---|
#18+
UstasZ, Я пытаюсь выяснить, как экстраполировать характеристики изделий, (Например, высота или толщина = 40 = 11 = число отверстий 4 ... и т.д.), но я не считаю эти описания. Может кто поможет мне? там был бы признателен ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2011, 17:38 |
|
TECDOC рвет мозги - помогите !!!!
|
|||
---|---|---|---|
#18+
Привет всем! У меня вопрос по Текдоку. Нужно вытащит все артикулы из базы по заданному Бренду->ветке, например FRAM->Фильтры FRAM-> 10105 Какие таблицы связывать ПОДСКАЖИТЕ! ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2012, 09:58 |
|
TECDOC рвет мозги - помогите !!!!
|
|||
---|---|---|---|
#18+
У меня примерно такой вариант... в какую сторону копать? Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
Халявы не жду, сам сделаю, направьте по структуре, пожалуйста. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2012, 10:12 |
|
TECDOC рвет мозги - помогите !!!!
|
|||
---|---|---|---|
#18+
The Dream, SUPPLIERS.SUP_BRAND ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2012, 11:15 |
|
TECDOC рвет мозги - помогите !!!!
|
|||
---|---|---|---|
#18+
Мих, У меня в SUPPLIERS.SUP_BRAND нет к примеру Continental (шины) и Kayaba (Амортизаторы) ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2012, 13:34 |
|
TECDOC рвет мозги - помогите !!!!
|
|||
---|---|---|---|
#18+
The Dream, А у вас полная БД? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2012, 16:07 |
|
TECDOC рвет мозги - помогите !!!!
|
|||
---|---|---|---|
#18+
Мих, Вообще мне ее вытащили отсюда http://www.plati.ru/asp/pay.asp?idd=882286 Но и в самом приложении Текдока в таблице TOF_SUPPLIERS нет к примеру Continental (шины) и Kayaba (Амортизаторы). Но есть в Brands. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2012, 21:19 |
|
TECDOC рвет мозги - помогите !!!!
|
|||
---|---|---|---|
#18+
Привет еще раз. У меня получилось нечто вроде этого: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22.
Нужно вытянуть все уникальные артикулы из ветки Амортизаторы для производителя KYB (Kayaba) Есть какие нибудь советы по структуре как вытянуть все уникальные артикулы для какого либо производителя по той или иной ветке? Н/р: Амортизаторы: - Kayaba (100 штук) - Koni (122 штук) Шины - Continental (200 штук) и.т.д. В общем суть такова, что нужно предоставить заказчику Excel файл со списками артикулов, например файл "Kayaba.xls" внутри списки артикулов... ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2012, 11:47 |
|
TECDOC рвет мозги - помогите !!!!
|
|||
---|---|---|---|
#18+
The Dream, Continental (шины) и Kayaba (Амортизаторы) Это уже скросированные бренды ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2012, 12:35 |
|
TECDOC рвет мозги - помогите !!!!
|
|||
---|---|---|---|
#18+
Мих, А как мне тогда поступить? Я пока не очень понимаю разницу между Brands и Suppliers Нужные мне фирмы есть в Brands, получается нужно стягивать с ART_LOOKUP где ART_BRA_ID = номеру Kayaba? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2012, 16:06 |
|
TECDOC рвет мозги - помогите !!!!
|
|||
---|---|---|---|
#18+
Коротко говоря, мне нужно найти актикулы всех амортизаторов от Kayaba ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2012, 16:17 |
|
TECDOC рвет мозги - помогите !!!!
|
|||
---|---|---|---|
#18+
The DreamМих, получается нужно стягивать с ART_LOOKUP где ART_BRA_ID = номеру Kayaba? Да ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2012, 17:03 |
|
TECDOC рвет мозги - помогите !!!!
|
|||
---|---|---|---|
#18+
Привет всем Все та же тема _ctm, разработчик выделаяет тому полю 1024 бит, т.е. по идее его можна загнать в 64 байт в BINARY, и тогда как работать? или в целое? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2012, 19:39 |
|
TECDOC рвет мозги - помогите !!!!
|
|||
---|---|---|---|
#18+
Итого поеб...сь 2-суток, есть решение по хранению _ctm полей TecDoc в MySQL в компактном виде Принимая во внимание: * максимальный размер битового поля в MySQL - 64 бит, * под поле _ctm TecDoc выделил 1024 бит (реально информация длиной до количества стран + универсальные маски, 4 кв 2012 = 252 бит) * как писалось раньше varchar(252) - дофига может жрать места (на минутку 252 байта + длина) рассматривалось решение хранить _ctm в TINYBLOB типе, потому что размер этого поля зависит от реальной длины хранимой информации + 1 байт(длина). Т.е. надеемся что 252 влезут в 31 байт + байт на длину. MySQL Код: plaintext
Итого экспортировать нужно тупо в бинарник. Как же сделать Код: sql 1.
Ну вот так :) Код: sql 1. 2. 3. 4. 5.
А это, как я до этого допер Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2012, 15:34 |
|
|
start [/forum/search_topic.php?author=%D0%9D%D0%B8%D0%BA%D0%BE%D0%B4%D0%B8%D0%BC+%D0%9D%D0%B8%D0%BA%D0%BE%D0%B4%D0%B5%D0%BC%D1%8C%D1%8F%D0%BD%D1%81%D0%BA%D0%B8%D0%B9&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
44ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
others: | 1133ms |
total: | 1300ms |
0 / 0 |