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

этоделает работать, но это невероятно медленно, чтобы быть непригодным для использования.

Кто-нибудь знает решение?

Ответы на вопрос(1)

Ваш ответ на вопрос