Никак не разберусь с INNER JOIN

#
Никак не разберусь с INNER JOIN
Товарищи, помогите разобраться с INNER JOIN, никак не пойму, хотя бы 1 примерчик, прочел QueryBuilder, и не особо понял честно говоря как сделать запрос с помощью INNER JOIN.
Мне нужно взять дополнительное свойство типа Флажок, перебрать через запрос все элементы Инфосистемы и выгрузить те что с Флажком в xsl, как это сделать, подскажите пожалуйста!!!
Модератор
#
Re: Никак не разберусь с INNER JOIN
Контроллеры и доп. св-ва смотрите примеры в большой теме http://www.hostcms.ru/forums/2/7122/
#
Re: Никак не разберусь с INNER JOIN
Прочел бегло, сегодня попробую реализовать, вот только логика мне не совсем ясна, получается выгрести все элементы ИС и уже после отобрать нужные и вывести их, мне кажется было бы целесообразней не выгребать все элементы а с помощью QB запросом сразу получить только нужные элементы что думаю существенно ускорит время обработки данной операции нежели выгребать всё с базы и отсеивать, но всё равно большое спасибо!!!
#
Re: Никак не разберусь с INNER JOIN
Фильтрация инфоэлементов по доп. свойству

      
$property_value = '1';
$property_id = 60;
$oProperty = Core_Entity::factory("property", $property_id);
      $tableName = $oProperty->createNewValue(0)->getTableName();
      $aItems->queryBuilder()
         ->leftJoin('informationsystem_item_properties', 'informationsystem_items.informationsystem_id', '=', 'informationsystem_item_properties.informationsystem_id')
         ->setAnd()
         ->open();
      $aItems->queryBuilder()
         ->where('informationsystem_item_properties.property_id', '=', $oProperty->id);
      $aItems->queryBuilder()
         ->where($tableName . '.value', '=', "{$property_value}");
      $aItems->queryBuilder()
         ->close()
         ->groupBy('informationsystem_items.id')
         ->having('COUNT(informationsystem_item_properties.id)', '=', $havingCount);
      $aItems->queryBuilder()
         ->leftJoin($tableName, 'informationsystem_items.id', '=', $tableName . '.entity_id',
            array(
               array('AND' => array('informationsystem_item_properties.property_id', '=', Core_QueryBuilder::expression($tableName . '.property_id')))
               )
            );
Команда разработчиков KAD Systems | Интеграция и нестандартные решения на совесть | Email: info@kad.systems Skype: kad.systems | http://kad.systems/ https://vk.com/kad_sys
Модератор
#
Re: Никак не разберусь с INNER JOIN
RifmaMan,
лучше бы не бегло читали, все выбирать из базы никто не предлагал, KAD предоставил Вам пример.
#
Re: Никак не разберусь с INNER JOIN
Подскажите как выводить только те элементы из подгрупп, которые содержат в доп. свойстве идентификатор текущей страницы.
Дополнительное свойство - это у меня набор идентификаторов (для каждого элемента свой).
Здесь вероятно надо переменную определить, нон как это сделать - затрудняюсь.
->where('property_value_strings.value', '=', '$для каждого элемента свой'

делаю, так, но безуспешно

$Informationsystem_Controller_Show
->xsl(
   Core_Entity::factory('Xsl'->getByName('СписокЭлементовPUBL_second'
   )
->groupsMode('tree'
->group(FALSE)
->limit(10)
->itemsProperties(TRUE)
->itemsPropertiesList(FALSE);
        
  // Объединение с нужной таблицей свойств


     $oCore_QueryBuilder_Select2 = Core_QueryBuilder::select('properties.id'
            ->from('properties'
            ->where('properties.tag_name', '=', 'listIdStructure';
            
          $Informationsystem_Controller_Show
            ->informationsystemItems()
            ->queryBuilder()
            ->leftJoin('property_value_strings', 'informationsystem_items.id', '=', 'property_value_strings.entity_id',
                
                array(
                array('AND' => array('property_value_strings.property_id', '=', Core_QueryBuilder::expression('`property_value_strings`.`property_id`'))
             )
          )
            // Идентификатор дополнительного свойства
      
            
                ->where('property_value_strings.property_id', '=', 594)
                ->where('property_value_strings.value', '=', '$для каждого элемента свой'
->groupBy('informationsystem_items.id'
             // Количество свойств
         ->having(Core_Querybuilder::expression('COUNT(DISTINCT `informationsystem_item_properties`.`property_id`)', '=', 1);
         

$Informationsystem_Controller_Show->show();

Авторизация