Если вам надо найти условие по двум разным ключам в одном столбце базы данных SQL – тогда сделайте следующее:
- Составьте запрос по первому ключу «Запрос1»;
- Составьте запрос по второму ключу «Запрос2»;
- Составьте объединенный запрос способом JOIN по следующему шаблону:
Пример:
Имеем два запроса –
SELECT sum(`uniq_amount`) AS good FROM `stats_in` WHERE (country_code IN ('US','DE')) AND (`referer_id` IN (1,3,4)) AND `date` = '2014-02-20'
и
SELECT sum(`uniq_amount`) AS bad FROM `stats_in` WHERE (NOT country_code IN ('US','DE')) AND (`referer_id` IN (1,3,4)) AND `date` = '2014-02-20'
Получаем объединение по строкам –
SELECT sum(IF(country_code IN ('US','DE'),`uniq_amount`,0)) AS good, sum(IF(country_code NOT IN ('US','DE'),`uniq_amount`,0)) AS bad FROM `stats_in` WHERE (`referer_id` IN (1,3,4))AND `date` = '2014-02-20'
P.S. Вот такое – белее серьезное объединение с бородой проверок рабочее
SELECT contentid, value2 FROM (SELECT `TlVR`.`contentid` AS contentid, `TlVR`.`value` AS value1, `TlV`.`id` AS pid, `TlV`.`name` AS name1 FROM `modx_site_content` AS `Ticket` RIGHT JOIN `modx_site_tmplvar_contentvalues` `TlVR` ON `TlVR`.`contentid` = `Ticket`.`id` RIGHT JOIN `modx_site_tmplvars` `TlV` ON `TlV`.`id` = `TlVR`.`tmplvarid` WHERE ( `Ticket`.`class_key` = 'Ticket' AND ( `TlVR`.`value` = 'Включить') AND `TlVR`.`contentid` = `Ticket`.`id` AND `Ticket`.`parent` = 14 AND `Ticket`.`published` = 1 AND `Ticket`.`deleted` = 0 ) ORDER BY Ticket.createdon DESC) AS t1, (SELECT `TlVR`.`contentid` AS contentid1, `TlVR`.`value` AS value2, `TlV`.`id` AS tid, `TlV`.`name` AS name2 FROM `modx_site_content` AS `Ticket` RIGHT JOIN `modx_site_tmplvar_contentvalues` `TlVR` ON `TlVR`.`contentid` = `Ticket`.`id` RIGHT JOIN `modx_site_tmplvars` `TlV` ON `TlV`.`id` = `TlVR`.`tmplvarid` WHERE ( `Ticket`.`class_key` = 'Ticket' AND ( (`TlVR`.`value` LIKE '%Баня%' AND `TlV`.`name` REGEXP '^titlebutton') OR (`TlVR`.`value` LIKE '%Сауна%' AND `TlV`.`name` REGEXP '^titlebutton') ) AND `TlVR`.`contentid` = `Ticket`.`id` AND `Ticket`.`parent` = 14 AND `Ticket`.`published` = 1 AND `Ticket`.`deleted` = 0 ) ORDER BY Ticket.createdon DESC) AS t2 WHERE ( contentid = contentid1 AND RIGHT (name1,1) = RIGHT (name2,1))
Здесь использовано:
- `TlVR`.`value` LIKE '%Сауна%' – нахождение части строки;
- `TlV`.`name` REGEXP '^titlebutton' - сравнение начала выражения по шаблону.
Комментарии ()