Проблемы при написании MySQL-запроса, включающего упорядоченные данные из трех таблиц - PullRequest
1 голос
/ 25 марта 2011

У меня есть таблица с именем tags, например:

+-------+----------+
| tagID | tagName  |
+-------+----------+
|     1 | jewelery |
|     2 | gifts    |
|     3 | asdf     |
|     4 | fashion  |
|     5 | diamonds |
+-------+----------+

Затем таблица с именем coupon_tags, например:

+-------+----------+
| tagID | couponID |
+-------+----------+
|     1 |        1 |
|     2 |        1 |
|     3 |        2 |
|     4 |        2 |
|     5 |        3 |
+-------+----------+

И, наконец, таблица с именемcoupons, вот соответствующие части (id совпадает с идентификатором couponID в другом месте):

+----+-----------------+
| id | zone            |
+----+-----------------+
|  1 | Los Angeles     |
|  2 | Orange County   |
|  3 | Los Angeles     |
|  5 | Orange County   |
|  6 | Orange County   |
+----+-----------------+

Для чего мне нужно написать запрос: я хочу получить tagNames через первую таблицу, которая соответствуетупорядоченный список из 10 наиболее часто используемых тегов идентификаторов во второй таблице, но он просматривает только идентификаторы купонов, которые соответствуют другому критерию - «зона» должна быть определенной зоной.В конце будут отображаться только первые 10 tagNames из определенной зоны.Я никогда не делал запрос с тремя таблицами раньше, какая-нибудь помощь?

Я пытаюсь сохранить это чисто на SQL, поскольку у меня было частично работающее PHP-решение, но оно было грязным и очень медленным.

1 Ответ

1 голос
/ 25 марта 2011
SELECT tags.tagName FROM
(SELECT tagID, COUNT(*) FROM
 coupon_tags 
 JOIN coupons ON coupons.couponID = coupon_tags.couponID AND zone = 'Los Angeles' 
 GROUP BY tagID ORDER BY COUNT(*) DESC LIMIT 10) AS most_used
JOIN tags ON most_used.tagID = tags.tagID 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...