我对此加入有问题......
这是我的2个表,adds和adds_filters
adds_filters structure:
addfilterid
addid
filterid
data the table look like this:
addfilterid addid filterid
1 31 65
2 31 158
3 32 109
4 32 145
adds structure
addid
addtitle
addtext
data the table look like this:
addid addtitle addtext
31 test test
32 test2 test2
一个添加可以有很多过滤器。我想获取adds_filters中的所有过滤器并显示表添加的结果。 我有以下查询...
SELECT * , af.filterid, af.addid
FROM `adds` AS a
INNER JOIN `adds_filters` AS af ON a.addid = af.addid
LIMIT 0 , 30
在表中添加,我有9条记录。上面的查询返回11个结果。我想获得9条记录,如果一条添加有多个过滤器,则显示在同一行...我可以这样做吗?
问候,约翰
答案 0 :(得分:1)
使用
SELECT a.* , GROUP_CONCAT(DISTINCT af.filterid)
FROM `adds` AS a
JOIN `adds_filters` AS af ON a.addid = af.addid
GROUP BY a.addid
LIMIT 0 , 30
答案 1 :(得分:1)
查看您的查询11个记录似乎是正确的结果,因为一个添加有多个过滤器。 因此,如果每个添加至少有一个过滤器,其中一些有两个或更多,结果将超过9行。
这是我的解释,但也许你想完成别的事情?
我的问题为什么你期望9行?
答案 2 :(得分:0)
你可以试试这个。
也许它接近你的意愿。
TRANSFORM Count(adds_filters.filterId) AS sumOffilterId
SELECT adds.addid, adds.addtitle, adds.addtext
FROM adds INNER JOIN adds_filters ON adds.addid = adds_filters.addid
GROUP BY adds.addid, adds.addtitle, adds.addtext
PIVOT adds_filters.filterId;
addid addtitle addtext 65 109 145 158
31测试1 1
32 test2 test2 1 1