Здравствуйте.
Не получается осуществить выборку по 2-ум одинаковым полям из разных строк из 1 таблицы, где 1 поле LIKE, другое =
Есть вот такой рабочий код-
CODE ( SQL):
скопировать код в буфер обмена
SELECT DISTINCT `uid` FROM `TABLE` WHERE `data` IN ( '$search','$search_v' ) AND `type`='user' GROUP BY `uid` HAVING count(DISTINCT `data`) = '2'
Ищет по двум полям как надо, но возникла потребность в использовании LIKE '$search_v'
Такое не проходит т.к в 1 строке только одно поле `data`
При
Выводит много лишнего.
Пробовал через JOIN
CODE ( SQL):
скопировать код в буфер обмена
SELECT `t1`.`uid` FROM `TABLE` AS `t1` LEFT JOIN `TABLE` AS `t2` ON (`t2`.`data` LIKE '%$search_v%') AND(`t2`.`data`='$search') WHERE `t1`.`data` AND `t1`.`uid`=`t2`.`uid` AND `t1`.`type`='user' GROUP BY `t1`.`uid`
Пробовал менять местами и по разному ставить параметры из ON и WHERE, но пока не получается.
Смысл в том, что 1 параметр data=$search должен иметь бОльший приоритет.
А потом шел поиск по data LIKE %$search_v%
Группируя по uid
Решение вроде кажется простым и очевидным, но я пока не могу понять как это осуществить.
Спасибо!
|