doublench21
@doublench21

Можно ли дополнить запрос SQL ?

$words = explode(" ", $search);
for ($i = 0; $i < count($words); $i++) {
    $if_clause .= "indexing_word.word='" . $words[$i] . "'";
    if ($i != count($words) - 1) {
        $if_clause .= " or ";
    }
}

$sql = "SELECT indexing_link.id, indexing_link.url, indexing_link.title, indexing_link.short
        FROM indexing_link, indexing_link_word, indexing_word
        WHERE (" . $if_clause . ")
        AND indexing_link_word.word_id=indexing_word.id
        AND indexing_link.id=indexing_link_word.link_id";


Считываю строку с input`а и пишу в массив разделяя каждое слово. Далее выполняю запрос.
Но появилась ещё одна таблица indexing_stop_word (id word). Можно ли как-то дополнить запрос так, что бы он игнорировал те слова, которые есть в этой таблице. (Таблица стоп слов. То есть просто напросто не искал по этим словам.)
  • Вопрос задан
  • 2210 просмотров
Решения вопроса 1
@Shahelm
Как-то так:
SELECT 
    indexing_link.id, 
    indexing_link.url, 
    indexing_link.title, 
    indexing_link.short
FROM indexing_link, indexing_link_word, indexing_word
WHERE 
    (:searchWords)
    AND indexing_word.word  not in (:stopWords)
    AND indexing_link_word.word_id=indexing_word.id
    AND indexing_link.id=indexing_link_word.link_id
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Melkij
@Melkij
PostgreSQL DBA
and not exists (select 1 from indexing_stop_word where indexing_stop_word.word=indexing_word.word)

?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽