Страница 1 из 2
значения переменных класса
Добавлено: Чт апр 26, 2018 3:36 pm
directman66
Друзья, никак не понял, каким образом можно получить значения свойств объекта класса через sql
Допустим есть объект 570,
тут хранятся его свойства, но только те, что не описаны в классе.
А где хранятся описанные классом свойства? Их получается нет в properties и нет в pvalues.
Re: значения переменных класса
Добавлено: Чт апр 26, 2018 10:50 pm
fandaymon
directman66 писал(а): ↑Чт апр 26, 2018 3:36 pm
Друзья, никак не понял, каким образом можно получить значения свойств объекта класса через sql
Допустим есть объект 570,
тут хранятся его свойства, но только те, что не описаны в классе.
А где хранятся описанные классом свойства? Их получается нет в properties и нет в pvalues.
Судя по коду
$properties=SQLSelect("SELECT * FROM properties WHERE OBJECT_ID='".$id."'");
$total=count($properties);
for($i=0;$i<$total;$i++) {
$p_id=$properties[$i]['ID'];
$p_value=SQLSelectOne("SELECT * FROM pvalues WHERE PROPERTY_ID='".$p_id."'");
}
получается что сначала надо найти ID нужной property для нужного объекта, а потом получить значение для данной property из таблицы pvalues
Re: значения переменных класса
Добавлено: Чт апр 26, 2018 10:58 pm
directman66
Похоже cached_value, но почему-то в ней нет id properties.
Re: значения переменных класса
Добавлено: Чт апр 26, 2018 10:58 pm
directman66
В pvalues нет классовых свойств. Только свойства объекта.
Re: значения переменных класса
Добавлено: Чт апр 26, 2018 11:09 pm
fandaymon
directman66 писал(а): ↑Чт апр 26, 2018 10:58 pm
В pvalues нет классовых свойств. Только свойства объекта.
Ну не знаю - глянул для примера датчик движения.
MotionSensor2.statusText - вполне себе классовое свойство... Хранится в pvalues. Правда вытаскивается и по oject_id...
Или тебя интересуют какие свойства есть у класса? Именно свойства, а не значения? Тогда надо смотреть таблицу properties и отбирать по ID класса
SELECT * FROM properties WHERE CLASS_ID=
Re: значения переменных класса
Добавлено: Чт апр 26, 2018 11:15 pm
directman66
Почему-то не все свойства там. нет не одного классового например у меня.
Зато тут есть все
Код: Выделить всё
SELECT objects.ID nameid, objects.TITLE titlename, objects.DESCRIPTION descr, properties.TITLE tip, cached_values.DATAVALUE
FROM `objects`, `properties`, `cached_values`
WHERE objects.ID=properties.OBJECT_ID and objects.class_id = (SELECT ID FROM `classes` WHERE title='starline-online')
and cached_values.KEYWORD = 'MJD:'||properties.TITLE
а тут только те, что нет у класса
Код: Выделить всё
SELECT objects.ID nameid, objects.TITLE titlename, objects.DESCRIPTION descr, properties.TITLE tip, pvalues.VALUE
FROM `objects`, `properties`, `pvalues`
WHERE objects.ID=properties.OBJECT_ID and objects.class_id = (SELECT ID FROM `classes` WHERE title='starline-online')
and properties.ID=pvalues.PROPERTY_ID
Т.е. если их сравнить, то количество пропертисов у одного объекта сильно разнится.
Re: значения переменных класса
Добавлено: Чт апр 26, 2018 11:20 pm
fandaymon
directman66 писал(а): ↑Чт апр 26, 2018 11:15 pm
Почему-то не все свойства там. нет не одного классового например у меня.
Зато тут есть все
Код: Выделить всё
SELECT objects.ID nameid, objects.TITLE titlename, objects.DESCRIPTION descr, properties.TITLE tip, cached_values.DATAVALUE
FROM `objects`, `properties`, `cached_values`
WHERE objects.ID=properties.OBJECT_ID and objects.class_id = (SELECT ID FROM `classes` WHERE title='starline-online')
and cached_values.KEYWORD = 'MJD:'||properties.TITLE
а тут только те, что нет у класса
Код: Выделить всё
SELECT objects.ID nameid, objects.TITLE titlename, objects.DESCRIPTION descr, properties.TITLE tip, pvalues.VALUE
FROM `objects`, `properties`, `pvalues`
WHERE objects.ID=properties.OBJECT_ID and objects.class_id = (SELECT ID FROM `classes` WHERE title='starline-online')
and properties.ID=pvalues.PROPERTY_ID
Возможно просто ещё не успело в основную таблицу попасть
Re: значения переменных класса
Добавлено: Чт апр 26, 2018 11:22 pm
directman66
Это как это? Редактор классов (где свойства объекта) с каким набором данных работает? Смотрел код плагина classes, но так до меня и не дошло.
С этим запросом база почему-то уходит в себя.
Код: Выделить всё
SELECT objects.ID nameid, objects.TITLE titlename, objects.DESCRIPTION descr, properties.TITLE tip, cached_values.DATAVALUE
FROM `objects`, `properties`, `cached_values`
WHERE objects.ID=properties.OBJECT_ID and objects.class_id = (SELECT ID FROM `classes` WHERE title='starline-online')
and cached_values.KEYWORD = 'MJD:'||properties.TITLE
если убрать последнюю склейку 'MJD:'||properties.TITLE, то запрос отрабатывает на ура. Как mySQL склеиваются строки?
Похожу тут через CONCAT. Эх, как быстро к ораклу привыкаешь )
Re: значения переменных класса
Добавлено: Чт апр 26, 2018 11:49 pm
directman66
После перезагрузки похоже почистилась cached_value. Значит эта таблица нам не подходит.
Re: значения переменных класса
Добавлено: Чт апр 26, 2018 11:57 pm
fandaymon
А чего бы просто не сделать свою таблицу с нужными параметрами? Зачем весь этот сыр-бор?