В продолжение предыдущего топика про сложные SQL-запросы, хотел бы поделиться свежим опытом. Сегодня на нашем сайте Клуба я решил сделать одну полезную штуку для себя — на страницах топиков и тегов выводить информацию о сопутствующих услугах. ? Справедливости ради сразу замечу, что данная «реклама» выводится только топиках, написанных мною, и не паразитирует на чужих топиках. В целом все логично: есть какая-то статья, описывающая произвольную проблему, и есть соответствующая этой проблеме услуга. К примеру, проблема «тормозит сайт», услуга «техническая оптимизация сайта». Собственно, все что здесь нужно — это прописать желаемые теги в документах услуг, а при заходе на страницу мы выполняем поиск этих услуг по тегам текущего документа-топика (а теги у нас заполнены во всех топиках). И вот здесь есть ряд тонкостей, о которых я и расскажу ниже. 1. Дополнительное поле тегов в услугах. Это обычное TV-поле «Список (множественный выбор)». В поле Возможные значения прописываем SQL-запрос. Это позволит формировать всегда актуальный список тегов. ? К слову, список тегов — почти 900 штук, но в админке тормоза с этим полем не замечены (хотя не знаю как на слабых тачках будет себя вести). Указываем нужные теги и сохраняем. Далее остается только прописать поиск тих услуг по тегам. И вот здесь начинается интересное… Значение данной TV-шки записывается в БД одной строкой с разделителем ||, к примеру оптимизация||производительность||тормозит сайт||нагрузка на сервер. И все бы ничего, да только поиск по этой строке нам надо выполнить как правило тоже не одного тега, а нескольких, к примеру оптимизация, тормозит сайт, нагрузка на сервер. Ясное дело, что порядок тегов не всегда будет совпадать. Еще раз уточню задачу: нам надо найти все документы, в которых будет найден хоть один из перечисленных тегов. Итак, вот конечный код (сразу для вставки в getdata-процессор): Что здесь происходит?