Находим строки в которых и значение chpu и parent_chpu одинаковы
SELECT x.* FROM seo AS x WHERE x.chpu IN ( SELECT y.chpu FROM seo AS y GROUP BY y.chpu,y.parent_chpu HAVING COUNT(*) > 1 ) ORDER BY chpu
Находим строки в которых и значение chpu и parent_chpu одинаковы
SELECT x.* FROM seo AS x WHERE x.chpu IN ( SELECT y.chpu FROM seo AS y GROUP BY y.chpu,y.parent_chpu HAVING COUNT(*) > 1 ) ORDER BY chpu
Например при фильтре по цене от 7 до 8 с учетом скидки 3%
AND (`price`-(`price`*3/100))>="7" AND (`price`-(`price`*3/100))<="8"
Задача: нужно выбрать строки, в которых поле начинается с выбранной буквы, не учитывая определенный набор символов в его начале — ИП, ООО и т.д.
Т.е. фильтр по алфавиту, но наименования указаны как ИП Тест или в другом любом формате.
Например, при поиске результатов, начинающихся с С должен найти ООО РЦ «Северо-Запад»
Набор неучитываемых символов задается пользователем, указывается через разделитель |:
$setting_replace='ИП|ООО|ТД|РЦ|"|«'; $part_sql='`name`'; $replaces=explode('|',$setting_replace); foreach($replaces as $item){ $part_sql="REPLACE(".$part_sql.",'".$item."','')"; } $where.=" AND TRIM(".$part_sql.") LIKE '".$_GET['let']."%'";//TRIM - удаляем образовавшиеся пробелы, в нашем случае в начале
В результате поиска строк, у которых наименование начинается с «С» требуемая часть sql-запроса будет иметь вид:
AND TRIM(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(`name`,'ИП',''),'ООО',''),'ТД',''),'РЦ',''),'"',''),'«','')) LIKE 'С%'
В примере нужно сделать выборку не учитывая нули в начале строки в БД.
Т.е. обозначена строка 11, но в БД может храниться значение 0011 или 011 или 11 или 00011 и т.д.
SELECT * FROM `modifications` WHERE TRIM(LEADING '0' FROM `part`)='11';
http://www.mysql.ru/docs/man/String_functions.html
SELECT MIN(CAST(`power` AS SIGNED)) FROM `modifications` WHERE `shown`=1 and `power`!='';
SELECT * FROM `redirect` ORDER BY CHAR_LENGTH(rfrom) DESC
В результате сортировка произойдет по количеству символов в rfrom от наибольшего
CREATE TEMPORARY TABLE IF NOT EXISTS temp_table(`uid` int(10)) ENGINE=MEMORY; TRUNCATE TABLE temp_table; INSERT INTO `temp_table` (SELECT MIN(uid) as uid FROM `base` GROUP BY `organization`); DELETE FROM `base` WHERE `uid` NOT IN (SELECT `uid` FROM `temp_table`);
ALTER IGNORE TABLE base ADD UNIQUE KEY(organization);