无法编写涉及三个表中的有序数据的MySQL查询

时间:2011-03-25 03:08:25

标签: mysql sql

我有一个名为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个最常用tagID的有序列表,但它只查找符合其他条件的couponIDs - “区域”是某个区域。最后,只显示某个区域的前10个tagNames。我之前从未做过三表查询,有什么帮助吗?

我正在尝试保留这个纯粹的SQL,因为我有一个部分工作的PHP解决方案,但它很混乱而且非常慢。

1 个答案:

答案 0 :(得分:1)

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