Git Hub
коротко
8 заметок с тегом

#SQL

SQL примеры )

25 ноября 2016, 0:03
#SQL

Bitrix: Пакетное выполнение SQL скриптов

6 июля 2016, 13:58
/**
	 * @param $pathToScript
	 * $pathToScript = $_SERVER["DOCUMENT_ROOT"]."/local/modules/[modname]/install/sql/b_table.sql";
	 *
	 */
	protected function runSqlScript($pathToScript){
		global $DB;
		$arErrors = $DB->RunSqlBatch($pathToScript);
		return $arErrors;
	}
#SQL   Bitrix

Нативная выборка свойства строка

21 июня 2016, 18:02

Нативная выборка свойства строка из таблицы инфоблоков

select e.ID as ORDER_ID, biep.VALUE EMAIL from b_iblock_element e 
INNER JOIN b_iblock_element_property biep ON e.ID = biep.IBLOCK_ELEMENT_ID
WHERE e.IBLOCK_ID=11  AND biep.IBLOCK_PROPERTY_ID = 36

Выборка свойства типа привязка к элементу одиночная

select e.ID as ORDER_ID, biep.VALUE  from b_iblock_element e 
INNER JOIN b_iblock_element_property biep ON e.ID = biep.IBLOCK_ELEMENT_ID
WHERE e.IBLOCK_ID=11  AND biep.IBLOCK_PROPERTY_ID = 46

Выборка множественного свойства привязка к элементу

select e.ID as ORDER_ID, biep.VALUE, e2.NAME   from b_iblock_element e 
INNER JOIN b_iblock_element_property biep ON e.ID = biep.IBLOCK_ELEMENT_ID
INNER JOIN b_iblock_element e2 ON e2.ID = biep.VALUE
WHERE e.IBLOCK_ID=11  AND biep.IBLOCK_PROPERTY_ID = 49
#SQL   Bitrix

Bitrix: Запросы к БД

21 июня 2016, 11:01

Запросы к БД

use Bitrix\Main\Application; 
use Bitrix\Main\Diag\Debug; 

$record = Application::getConnection() 
->query("select 1+1;") 
->fetch(); 
Debug::writeToFile($record);
#SQL   Bitrix

SQL: Важность учёта

29 мая 2016, 19:01

Задачка: Важность учёта

Дана таблица поступлений товаров на склады компании следующего формата:

create table incoming (
    storage_id integer not null,
    category_id integer not null,
    quantity integer not null,
    time datetime not null
);

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

storage_id | category_id | quantity | time
-----------------------------------------------------
1 | 32 | 3 | 2015-03-17 13:55:32
1 | 32 | 8 | 2015-03-17 13:15:22
3 | 32 | 23 | 2015-03-17 14:45:57
1 | 7 | 13 | 2015-03-17 15:56:12
1 | 32 | 7 | 2015-03-17 17:05:37
2 | 17 | 1 | 2015-03-18 13:13:22
1 | 7 | 13 | 2015-03-19 21:53:17

запрос должен возвращать

storage_id | category_id | quantity
----------------------------------------------
1 | 7  | 13
1 | 32 | 7
2 | 17 | 1
3 | 32 | 23

Решение

select storage_id,category_id,quantity
from (select *, DATE_FORMAT(`time`,'%Y%m%d%H') as sortOnTime,  CONCAT(DATE_FORMAT(`time`,'%Y%m%d'), storage_id ) as days 
from incoming  ORDER BY sortOnTime DESC )s 
GROUP BY days
ORDER BY storage_id , category_id

в запросах для production запросы вида select *,.. лучше не использовать а перечислять жёстко все необходимые поля

SQL: JOINS объяснения и тонкости

27 мая 2016, 12:39

JOIN

выборки с объединениями справа и слева одни из любимых вопросов которые задают соискателям на технических интервью.

Левый

SELECT * FROM authors a LEFT JOIN rooms r ON a.`room-id`=r.id

в таблице authors я сделал имя поле room-id через дефис, чего в реальной практике проектирования баз данных я бы категорически не делал.
одна из причин что в нативных запросах вам придётся каждый раз оборачивать имя этого поля в `- апострофы.

Правый

SELECT * FROM authors a RIGHT JOIN rooms r ON a.`room-id`=r.id

Прямое связываение через WHERE и без JOIN

SELECT * FROM authors a, rooms r WHERE a.`room-id` = r.id

SQL FIDDLE

#SQL

Bitrix d7 создание таблицы

19 октября 2015, 12:14
public static function createTable(){

        $connection = Application::getInstance()->getConnection();

        if (!$connection->isTableExists(static::getTableName()))
        {
            static::getEntity()->createDbTable();
            return true;
        }
        else
            return false;


    }

    public static function dropTable(){
        $connection = Application::getInstance()->getConnection();

        $connection->dropTable(static::getTableName());
        return true;
    }
#SQL   Bitrix   D7

Описание таблиц битрикса

19 октября 2014, 9:59
  1. b_catalog_group — типы цен
  2. b_catalog_price — цены товаров
  3. b_catalog_product — товар как сущность

#SQL