【发布时间】:2012-11-18 23:42:37
【问题描述】:
我有 3 个表,正在恢复它们:
:::NEWS:::
ID | TITLE
1 | New A
2 | New B
:::TAGTONEW:::
NEWID | TAGID
1 | 1
1 | 2
2 | 2
2 | 3
:::TAGS:::
ID | TAG
1 | religion
2 | sport
3 | politic
这样做的目的是搜索与给定标签列表匹配的新闻(例如带有标签运动和宗教的新闻)。行。问题是当我做类似的事情时:
SELECT * FROM news JOIN tagtonew ON news.id = newid JOIN tags ON tagid = tags.id
WHERE tag IN ('religion','sport');
结果将是 3 行,其中 2 行重复 New A。好的,我可以使用GROUP BY news.id 只获取一行,但问题是我需要返回与 New A 匹配的所有标签(我需要返回 New A 与运动和宗教有关),我该怎么做去做?请求新人?提前致谢。
编辑
上面的结果是:
New A - religion
New A - sport
New B - sport
如果我组会是这样的:
New A - religion
New B - sport
但我需要知道 A 也与运动有关,因为我需要以 JSON 格式返回它。所以我需要输出类似于:
New A - (religion, sport)
New B - sport
【问题讨论】:
-
您使用的是什么 rdbms? mysql? sqlserver?甲骨文?什么?