mysql: поиск строк, имеющих несколько тегов и одинаковый идентификатор
У меня возникла проблема с вычислением MySQL, чтобы найти ссылки, которые имеют две конкретные 'теги и то же самоеХашид» при выполнении соединения двух таблиц
Предположим, мои таблицы выглядят так:
связи
md5 url title numberofsaves
-----------------------------------------
a0a0 google.com foo 200
b1b1 yahoo.com yahoo 100
Теги
md5 tag
---------------
a0a0 awesome
a0a0 useful
a0a0 cool
b1b1 useful
b1b1 boring
Я хочу вернуть строки, которые имеют теги ОБАполезно» а также 'классно'
Текущий (рабочий / быстрый) запрос для поиска ссылок по 1 тегу:
SELECT links.title, links.numsaves FROM links LEFT JOIN tags ON links.md5=tags.md5 WHERE tags.tag = 'useful' ORDER BY links.numberofsaves DESC LIMIT 20
После прочтениястатья Я пытался использовать следующее:
SELECT links.title, links.numsaves FROM links LEFT JOIN tags ON links.md5=tags.md5 GROUP BY tags.md5 HAVING SUM(tags.tag='useful') AND SUM(tags.tag='awesome') ORDER BY links.numberofsaves DESC LIMIT 20
этоделает работать, но это невероятно медленно, чтобы быть непригодным для использования.
Кто-нибудь знает решение?