Я пытаюсь использовать внутреннее соединение для поиска относительных строк.Использование MySQL для многих операторов select для поиска относительных строк
Но, похоже, ничего не возвращает. Пожалуйста, порекомендуйте.
В принципе, я разложил все ключевые слова с исходного названия страницы и описания каждой статьи. Поэтому, когда я прихожу к поиску, я могу запросить таблицу ключевых слов.
здесь является статей с ключевыми словами
- Таблица схемы
CREATE TABLE article (id INT, title TEXT, description TEXT);
CREATE TABLE keyword (id INT, keyword VARCHAR(255));
CREATE TABLE article_keyword (article_id INT, keyword_id INT);
- Добавить статью 1
insert into article set
id = 1,
title = "my text book like a black hole",
description = "I have a text book. Any people who read it and after days they will disappear. etc...";
- Добавление ключевых слов для статьи 1
insert into keyword set
id = 1,
keyword = "text book";
insert into keyword set
id = 2,
keyword = "black hole";
insert into article_keyword set
article_id = 1,
keyword_id = 1;
insert into article_keyword set
article_id = 1,
keyword_id = 2;
- Добавить СТАТЬЮ 2
insert into article set
id = 2,
title = "the fact of deep space black hole",
description = "More researches are telling fake story about black holes is exists. But my alien friend tell me it is wrong ... etc";
- Добавление ключевых слов для статьи 2
insert into keyword set
id = 3,
keyword = "research";
insert into keyword set
id = 4,
keyword = "alien";
insert into article_keyword set
article_id = 2,
keyword_id = 2;
insert into article_keyword set
article_id = 2,
keyword_id = 3;
insert into article_keyword set
article_id = 2,
keyword_id = 4;
- Поиск с помощью "текст книги", как ожидается 1 статьи
SELECT article.id, title FROM article
JOIN article_keyword ak ON ak.article_id = article.id
JOIN keyword k1 ON ak.keyword_id = k1.id
WHERE k1.keyword = "text book"
- Нахождение с помощью "черной дыры", как ожидается 2 статьи
SELECT article.id, title FROM article
JOIN article_keyword ak ON ak.article_id = article.id
JOIN keyword k2 ON ak.keyword_id = k2.id
WHERE k2.keyword = "black hole"
- При поиске бо ok включает все эти ключевые слова, а затем не получает их.
SELECT article.id, title FROM article
JOIN article_keyword ak ON ak.article_id = article.id
JOIN keyword k1 ON ak.keyword_id = k1.id
JOIN keyword k2 ON ak.keyword_id = k2.id
WHERE k1.keyword = "text book"
AND k2.keyword = "black hole";
Любая идея mysql не может вернуть мне статью 1?
Что-то не так в этом вопросе?
Спасибо!
Это не будет работать, если цель состоит в том, чтобы найти статьи со всеми ключевыми словами, указанных в этом будет соответствовать статьям с любым (и не все) или ключевые слова. – jpw