Архив

Архив раздела ‘MySQL’
27 января 2016 Нет комментариев

В примере нужно сортировать позиции каталога по наименованию, но вначале товары в наличии — остаток которых больше 0.

SELECT * FROM `catalog` WHERE `hide`='0' ORDER BY IF(`ost`,TRUE,FALSE) DESC, `name` ASC;

upd:
замечено что позиции с остатком меньше 0 все равно попадают в начало списка.
Другой вариант:

SELECT * FROM `catalog` WHERE `hide`='0' ORDER BY `ost`>0 DESC, `name` ASC;
Categories: MySQL Tags:
21 декабря 2015 Нет комментариев

Необходимо во where сделать выборку по varchar как по int.

В примере в таблице sizes — поле name — varchar, нужно выбрать все строки в которых наименование размера больше 140.
При обычной выборке в результат попадет также, к примеру, 50, т.к. сортировка будет по алфавиту.

Чтобы сделать выборку как для числовых данных используем:

SELECT * FROM sizes WHERE CAST(name AS SIGNED)>='140';
Categories: MySQL Tags:
7 сентября 2015 Нет комментариев
SELECT * FROM `tablename` WHERE `fieldname` REGEXP '^[0-9]+$'

пример update:

UPDATE `tablename` SET `field_en`=`field_ru` WHERE `field_ru` REGEXP '^[0-9]+$';
Categories: MySQL Tags:
2 февраля 2015 5 комментариев

Увеличить значения какого либо поля на указанный процент от текущего значения для всех или группы строк:

UPDATE `tablename` SET `fieldname`=`fieldname`+(`fieldname`/100*процент)

Конкретный пример:
увеличить цену всех позиций каталога на 30% кроме тех, которые находятся в подкатегориях категории с id 203.

UPDATE `catalog` SET `price`=`price`+(`price`/100*30) WHERE `parent` NOT IN (SELECT id FROM `razdel` WHERE `parent`='203')
Categories: MySQL Tags:
13 января 2015 2 комментария
$qpos=mysql_query('SELECT COUNT(*) FROM table WHERE pos<'.$data['pos']);
$rpos=mysql_fetch_array($qpos);
$pos=$rpos[0]+1;
Categories: MySQL, PHP Tags: ,
8 декабря 2014 Нет комментариев

Было актуально для импорта большого csv, для экономии ресурсов на разборку файла при помощи php.

LOAD DATA LOCAL INFILE "file_name.csv"
INTO TABLE table_name
COLUMNS TERMINATED BY ';'
OPTIONALLY ENCLOSED BY '"'
ESCAPED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES;

Готовый пример php:

mysql_query("TRUNCATE TABLE `bitrix_catalog`;");
mysql_query("LOAD DATA LOCAL INFILE \"".$file_catalog_path."\"
INTO TABLE bitrix_catalog
COLUMNS TERMINATED BY ';'
OPTIONALLY ENCLOSED BY '\"'
ESCAPED BY '\"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES;");

Читать далее…

Categories: MySQL, PHP Tags: ,
19 августа 2014 Нет комментариев
SELECT COUNT(*) FROM (
	(SELECT DISTINCT `id` FROM `tbl_1` WHERE 1)
	UNION ALL
	(SELECT DISTINCT `id` FROM `tbl_2` WHERE 1)
	UNION ALL
	(SELECT DISTINCT `id` FROM `tbl_3` WHERE 1)
) AS t1;
Categories: MySQL Tags: