不确定标题是否正确解释了情况,但我会尽力在这里做最好的解释。
我有一个表,其中3个字段链接到其他表,我希望以下列方式对所有行进行分组:
item_id, user_id, group_id
1 2 3
2 2 3
3 4 5
4 2 4
在我的查询中,我想用逗号分隔格式按group_id分组的所有items_id我在WHERE子句上还有一些额外的条件,这就是为什么内连接
我可以使用此查询
"SELECT
GROUP_CONCAT( DISTINCT A.item_id ) AS ids
FROM tableA A
INNER JOIN tableB B ON(tableA.id = tableB.id)
WHERE xxxxx
GROUP BY A.group_id
"
稍后我可以循环结果并使用逗号分隔到内部循环结果
中的每个id但我也想用user_id对它进行分组,以便做这样的事情
foreach( query_results.... ){
foreach( group_id.... ){
foreach( item_id.... ){
// Display info
}
}
}
有关于此的任何想法吗?
答案 0 :(得分:1)
使用子查询,我们可以将两个项目,用户作为两个单独的列
select T1.group_id, T1.itemids, T2.userids
FROM
(SELECT group_id,
GROUP_CONCAT( DISTINCT A.item_id ) AS itemids
FROM table1 A
group by group_id) T1
INNER JOIN
(
SELECT
group_id, GROUP_CONCAT( DISTINCT A.user_id ) AS userids
FROM table1 A
group by group_id
) T2
on T1.group_id = T2.group_id
答案 1 :(得分:0)
使用2 GROUP_CONCATS
SELECT GROUP_CONCAT( DISTINCT A.item_id ) AS ids,
GROUP_CONCAT( DISTINCT A.group_id ) AS groups
FROM tableA A
INNER JOIN tableB B ON(tableA.id = tableB.id)
WHERE xxxxx
GROUP BY A.group_id
循环您的资源,然后在groups
和ids
值上使用Explode并根据需要循环播放