sql сниппеты


Примеры SQL запросов

Выбрать товары, для которых цен установлено более 12
SELECT PRODUCT_ID, count(PRODUCT_ID) as cnt 
from b_catalog_price 
group by PRODUCT_ID
having cnt>12
выбрать товары, для которых разделы не проставлены в таблице разделов b_iblock_section_element
SELECT ID
 FROM b_iblock_element
 WHERE ID NOT IN (SELECT IBLOCK_ELEMENT_ID FROM b_iblock_section_element WHERE IBLOCK_ELEMENT_ID=ID);
Работа с БД через api bitrix
global $DB;

$strSql = "SELECT ID FROM b_stat_phrase_list WHERE  PHRASE='".$text."' and SESSION_ID='".$_SESSION["SESS_SESSION_ID"]."'"; //sql запрос
$strSql = $DB->ForSql($strSql); //Подготавливает строку (заменяет кавычки и прочее) для вставки в SQL запрос

$res = $DB->Query($strSql); //выполняет запрос SELECT,INSERT,DELETE,UPDATE
while ($row = $res->Fetch()){
   //..
}


$DB->StartTransaction(); //Открывает транзакцию

$arFields = array('имя поля'=>'значение');

$arFields["TIMESTAMP_X"] = $DB->GetNowFunction(); //текущее время


//обновить вариант 1
$DB->Update("b_form", $arFields, $strWhere); 

//обновить вариант 2
$strUpdate = $DB->PrepareUpdate("b_form_result_answer", $arFields);    
$strSql = "UPDATE b_form_result_answer SET ".$strUpdate." WHERE RESULT_ID=".$RESULT_ID." and FIELD_ID=".$FIELD_ID;
$DB->Query($strSql, false, $err_mess.__LINE__);

//добавить вариант 1
$ID = $DB->Insert("b_form", $arFields); 

//добавить вариант 2
$arInsert = $DB->PrepareInsert("b_form_result_answer", $arFields);    
$strSql = "INSERT INTO b_form_result_answer (".$arInsert[0].") VALUES (".$arInsert[1].")";
$DB->Query($strSql, false, $err_mess.__LINE__);


if (strlen($strError)<=0){
   $DB->Commit(); //сохранить последние изменения в базе и закрыть транзакцию
}
else{
   $DB->Rollback(); //откатить изменения  и закрыть транзакцию

}