Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Двойной запрос к одной базе
Форумы портала PHP.SU » PHP » SQL и Архитектура БД » Двойной запрос к одной базе

Страниц (1): [1]
 

1. wisedarkness - 27 Апреля, 2016 - 13:44:57 - перейти к сообщению
Здравствуйте.
Не получается осуществить выборку по 2-ум одинаковым полям из разных строк из 1 таблицы, где 1 поле LIKE, другое =

Есть вот такой рабочий код-
CODE (SQL):
скопировать код в буфер обмена
  1. 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`
CODE (SQL):
скопировать код в буфер обмена
  1. WHERE `data` = '$search' AND `data` LIKE '%$search_v%'


При
CODE (SQL):
скопировать код в буфер обмена
  1. WHERE `data` = '$search' OR `data` LIKE '%$search_v%'

Выводит много лишнего.

Пробовал через JOIN
CODE (SQL):
скопировать код в буфер обмена
  1. 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
Решение вроде кажется простым и очевидным, но я пока не могу понять как это осуществить.
Спасибо! Улыбка

 

Powered by ExBB FM 1.0 RC1