Перейти к содержимому


Фотография

BMW ETK и SQL запросы


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 45

#1 pepelxl

pepelxl

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 590 сообщений

Отправлено 15 марта 2019 - 18:19

Предлагаю обсуждать возможность, методы и запросы к  базе.

Сам на данный момент туплю.

На просторах инета валяются mysql базы конвертированные умельцами. 

Вроде всё понятно, но сама идея не нравится.

Во первых база должна быть актуальной.

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

Сам вопрос: есть возможность обращаться на прямую к оригинальной базе?

Допустим ставлю ETK в режиме сервера. И ломлюсь на прямую к ней с SQL  запросом. Если есть, то чем, логин, пароль.

 

Так же, интересует кто что ищет(с примерами выборок). Но тут сначала надо определится с первым вопросом, т.к. запросы и методы могут отличатся.

 

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


  • var14 это нравится

#2 var14

var14

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 186 сообщений
  • ГородIrkutsk

Отправлено 15 марта 2019 - 19:47

Сам вопрос: есть возможность обращаться на прямую к оригинальной базе?

 

Цепляешься к файлам из папки \Rheingold\SQLiteDBs (или другим скульным с данными), да и всё - берёшь чё надо. Не?

 

Запросы, вроде, даёт делать

 

bezymyannyjj.png



#3 pepelxl

pepelxl

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 590 сообщений

Отправлено 15 марта 2019 - 19:51

В данный момент я о вычеленении данных из ETK. А точнее о их обработке без изъятия. Что бы сам etk отдавал мне то что нужно, без промежуточных конвертаций.



#4 var14

var14

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 186 сообщений
  • ГородIrkutsk

Отправлено 15 марта 2019 - 20:14

а, Transbase, пардон))) :pardon:



#5 2real4u

2real4u

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 1 679 сообщений
  • ГородЧикаго

Отправлено 15 марта 2019 - 23:41

В тему про ETK. Ни один из известных мне общих логинов на www.parts.bmwgroup.com больше не работает. Это у всех, так, теперь только индивидуальными туда ходить?



#6 GUNhed

GUNhed

    Продвинутый пользователь

  • Администраторы
  • 6 956 сообщений

Отправлено 15 марта 2019 - 23:43

да


нету денег - сосите сами


#7 MEN

MEN

    Администратор

  • Администраторы
  • 1 822 сообщений
  • ГородМинск BY

Отправлено 16 марта 2019 - 02:41

В тему про ETK. Ни один из известных мне общих логинов на www.parts.bmwgroup.com больше не работает. Это у всех, так, теперь только индивидуальными туда ходить?

Кинул один общедоступный в личку


По пустякам не беспокойте. Если есть вопросы - создавайте темы на форуме.


#8 TrumP'LIN

TrumP'LIN

    никакой

  • Пользователи
  • PipPipPip
  • 334 сообщений
  • ГородНе отличаецо от других

Отправлено 16 марта 2019 - 08:24

В тему про ETK. Ни один из известных мне общих логинов на www.parts.bmwgroup.com больше не работает. Это у всех, так, теперь только индивидуальными туда ходить?

Кинул один общедоступный в личку
можно и мне пожалуйста

#9 pepelxl

pepelxl

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 590 сообщений

Отправлено 18 марта 2019 - 19:27

Вообщем нужно немного наблюдательность и чуть-чуть свободного времени.

Всё что нужно для работы и  так лежит в етк.

Ни какой сервак ставить не нужно, достаточно etk(local) и пошарится по папкам.

Там запускаем включённого в поставку клиента WinTBI:

Прикрепленный файл  2019-03-18_18-14-16.png   499,11К   22 Количество загрузок:

 

А вот для анализа  это трындец.

Мужики, кто капал в эту сторону? Есть что более-менее юзабельное?

Нашёл в нете DbSchema, но подружить не получается.

 

А вот обсуждать запросы, всё-таки лучше для WinTBI, так как он есть у всех.



#10 var14

var14

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 186 сообщений
  • ГородIrkutsk

Отправлено 18 марта 2019 - 20:08

Осталось тебе найти готовую структуру таблиц БД, или разобраться в ней самому, проанализировав данные, к которым есть доступ.

Запросы же можно писать, судя по скриншоту) select from join where - больше ничего и не надо для пытливого ума)))



#11 pepelxl

pepelxl

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 590 сообщений

Отправлено 18 марта 2019 - 20:15

Структура и связи там и так в открытую лежат. Надо анализировать и придумывать запрос. Тут ещё надо в запросах поднатырится. WinTBI уныл(sql'92), так ещё и синтаксис жоский. А я уже к воркбенчу привык с его всеядностью.



#12 pepelxl

pepelxl

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 590 сообщений

Отправлено 18 марта 2019 - 20:22

Да и простой запрос фиг у меня получается. Кумекать надо. Поэтому и создал тему. Например, в корне неправильный, сильно сокращённый запрос на вычеленение всех запчастей привязанных к одной опции и типу там у меня и то четыре вложения занимает. Дальше база отрыгивает по таймауту.



#13 var14

var14

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 186 сообщений
  • ГородIrkutsk

Отправлено 18 марта 2019 - 20:28

Структура и связи там и так в открытую лежат.

 

красота же! это как с api ediabas - всё, что надо, всё прямо там же в папках лежит разжёваное с примерами

 

 

Да и простой запрос фиг у меня получается. Кумекать надо. Поэтому и создал тему. Например, в корне неправильный, сильно сокращённый запрос на вычеленение всех запчастей привязанных к одной опции и типу там у меня и то четыре вложения занимает. Дальше база отрыгивает по таймауту.

 

мож запрос попроще взять? например, применимость детали по кузовам)

 



#14 pepelxl

pepelxl

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 590 сообщений

Отправлено 18 марта 2019 - 20:35

Применяемость детали по кузовам etk сама показывает. :gamer:



#15 var14

var14

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 186 сообщений
  • ГородIrkutsk

Отправлено 18 марта 2019 - 20:38

Применяемость детали по кузовам etk сама показывает. :gamer:

 

разминка перед тренировкой обязательна, а то сразу подавай 10-ти этажные запросы))



#16 pepelxl

pepelxl

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 590 сообщений

Отправлено 19 марта 2019 - 14:23

Погорячился я с наличием схемы, sql лежит не для publ. 

Плюсом, зацепил, всё-таки нормальный вивер.

но, что-то с выгрузкой схемы печаль. Походу её там немного.

Прикрепленный файл  2019-03-19_13-14-57.png   397,79К   17 Количество загрузок:


  • var14 это нравится

#17 var14

var14

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 186 сообщений
  • ГородIrkutsk

Отправлено 19 марта 2019 - 20:02

Погорячился я с наличием схемы, sql лежит не для publ. 

Плюсом, зацепил, всё-таки нормальный вивер.

но, что-то с выгрузкой схемы печаль. Походу её там немного.

attachicon.gif2019-03-19_13-14-57.png

 

список таблиц можно там же в WinTBI вывести SELECT * FROM systable;


  • pepelxl это нравится

#18 pepelxl

pepelxl

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 590 сообщений

Отправлено 19 марта 2019 - 22:02

Подскажи, если не работает DECLARE, то есть другой способ объявления переменной? Или transbase её, в принципе, не поддерживает?



#19 var14

var14

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 186 сообщений
  • ГородIrkutsk

Отправлено 20 марта 2019 - 09:51

Пример самого просто запроса - выводит информацию по номеру детали.

select teil_hauptgr, teil_untergrup, teil_sachnr, teil_benennzus, teil_entfall_dat, ben_text from w_teil inner join w_ben_gk on ben_textcode = teil_textcode where teil_sachnr = '6788212' and ben_iso = 'en' and ben_regiso = '';
 
bezymyannyjj.png
 
Или так: select * from w_teil inner join w_ben_gk on ben_textcode = teil_textcode where teil_sachnr = '6788212' and ben_iso = 'en' and ben_regiso = '';
Тогда в результат запроса попадут все колонки из таблицы деталей.
В самой таблице деталей не хранится наименование детали, а хранится в отдельной таблице по кодам и языкам.


#20 pepelxl

pepelxl

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 590 сообщений

Отправлено 21 марта 2019 - 14:11

Немного анализа. На правильность вывода не претендую.

Хотел написать несколько вызовов, на подобии ETK, но столкнулся с тем, что не правильные запросы дают, иногда, более интересные результаты для размышления, чем изначально хочешь найти.

 

Фундаментом ETK является блок(вкладка, сегмент, сборка и т.д., называйте как хотите), это группа во главе со отображаемым значением  XX-YYYY, где XX - условная группа, YYYY индивидуальное значение. Забегу на перёд XX условное, потому, что  может находится в другой группе от той что обозначена(за это отвечает отдельный параметр). Блок представляет собой картинку , перечень номеров запчастей и всё что к ней относится.

Блок можно на прямую вызвать из etk:

Прикрепленный файл  2019-03-21_11-34-40.png   50,71К   6 Количество загрузок:

 

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

Все  блоки перечислены в таблице w_btzeilen. Таблица содержит весь перечень запчастей привязанных к конкретному блоку. При вызове блока, ETK отсекает лишнюю номенклатуру по параметрам кузова и fa. А так же отсекается показ самих опции FA, если они отсутствуют в вызове.

Для просмотра всего блока достаточна простая выборка:

SELECT * FROM w_btzeilen WHERE btzeilen_btnr = ' здесь номер блока, например 13_1497';

Если вы не находите нужные вам запчасти, то говорить нужно о косяке самой etk(и такое бывает). Дальнейший анализ уже не поможет.

 

Таблицы винов: w_fgstnr, w_fgstnr_sala, w_fgstnr_sicher.

w_fgstnr содержит вин номера блоками (с...по) и имеет колонку fgstnr_mospid, которая содержит магическое число для фильтрации запчастей.

остальные две базы - это что-то типа вины индивидуал. выборка по ним происходит по другому принципу.

Таблица w_btzeilen_verbauung самая тяжоловесная. Именно по ней происходит фильтрация всех запчастей опираясь на fgstnr_mospid.

 

Допустим, я хочу выцепить все запчасти и их расположения,зависимые от кода fa и типа авто.

Сначала создадим представление для комментариев с нужным языком(если оно вам вообще нужно):

CREATE VIEW v_name(v_sachnr,v_text) AS SELECT DISTINCT teil_sachnr , ben_text FROM w_teil INNER JOIN w_ben_gk ON teil_textcode = ben_textcode WHERE ben_iso = 'ru';
CREATE VIEW v_name_b(v_bild,v_text_b) AS SELECT DISTINCT bildtaf_btnr , ben_text FROM w_bildtaf INNER JOIN w_ben_gk ON bildtaf_textc = ben_textcode WHERE ben_iso = 'ru';

Далее сам запрос(он на самом деле вызовет не всё :geek: ):

SELECT btzeilen_btnr AS "Block" , v_text_b AS "Name Bild", btzeilen_bildposnr AS "Position" , btzeilen_sachnr AS "Zapchast" , v_text AS "Name"
FROM w_btzeilen INNER JOIN v_name ON btzeilen_sachnr = v_sachnr INNER JOIN v_name_b ON btzeilen_btnr = v_bild
WHERE btzeilen_kommvor IN (SELECT DISTINCT komm_id FROM w_komm WHERE komm_code LIKE '%7RR%' 
AND komm_id IN	(SELECT DISTINCT kommh_id FROM w_komm_help WHERE kommh_mospid IN (SELECT DISTINCT fgstnr_mospid FROM w_fgstnr WHERE fgstnr_typschl = 'FG41'))); 

Для примера использованы 7RR и FG41.

Результатом будет:

Прикрепленный файл  2019-03-21_13-07-35.png   40,11К   6 Количество загрузок:


  • var14 это нравится




Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных