我正在尝试通过将不同的元列分组来使Wordpress正常工作的SQL语句。
我有一张有投票表,一张有位置表,一张有一些城市参考链接的表(每个城市可以包含多个位置)。
我试图基于每个大城市对所有投票进行分组,但是在将两个SQL语句合为一体时遇到了一些麻烦。
这是查询以投票数获得前50名的位置:
SELECT Count(*) as Amount, meta.meta_value as Location FROM wp_votes as votes
LEFT JOIN wp_postmeta as meta ON votes.`post_id` = meta.`post_id`
WHERE meta.meta_key = 'location'
AND votes.`post_id` IS NOT NULL AND votes.`post_id` <> 0
GROUP BY meta.meta_value
ORDER BY Amount DESC
LIMIT 50;
这将返回如下响应:
|---------------------|------------------|
| Amount | meta_value |
|---------------------|------------------|
| 1250 | Brooklyn |
|---------------------|------------------|
| 400 | Manhattan |
|---------------------|------------------|
| 300 | Chicago |
这是根据位置获取城市的查询。它返回一个城市列表(在上面的示例中,它将仅返回纽约),并且在纽约将“包括”布鲁克林,“曼哈顿”这两个位置。
SELECT meta_value FROM wp_posts as location
LEFT JOIN wp_postmeta as city ON city.`post_id` = location.`ID`
WHERE city.`meta_key` = 'reference'
GROUP BY city.`meta_value`;
这里的想法是将这两个查询映射在一起,以便如果第一个查询的位置与第二个查询的位置匹配,则将按城市名称对行进行分组。
因此合并查询的输出为:
|---------------------|------------------|
| Amount | meta_value |
|---------------------|------------------|
| 1650 | New York |
|---------------------|------------------|
| 300 | Chicago |
|---------------------|------------------|
这可能吗?