我有两张桌子:
1.Activity-- which stores all the activities from a user
2.User-- which stores all the registered users
我想在一个查询中获取所有帖子和所有帖子的内容。一行是帖子或类似由类型列的值决定。
表名称 - 活动
| actId | parentId | type | postedby |
---------------------------------------------------
| 100 | NULL | post | 100 |
| 200 | 100 | like | 200 |
| 300 | 100 | like | 300 |
| 400 | 100 | like | 400 |
| 500 | NULL | post | 100 |
| 600 | 500 | like | 600 |
表名称 - 用户
| userId | name |
-------------------
| 100 | Amit |
| 200 | Alok |
| 300 | Arjun |
| 400 | Arpeet |
| 600 | Amaan |
输出应为
| actId | name | LikedBy |
------------------------------------------
| 100 | Amit | Alok, Arjun, Arpeet|
| 500 | Amit | Amaan |
注意 - 我不希望使用 FOR XML PATH 来实现这一点,因为我正在使用的SQLite不支持它。
我的查询尝试是
SELECT a.id, u.name,
(select group_concat(u.name) from activity a, user u where a.id = u.id and a.type = 'like'
group by a.parent) as likedby
FROM activity a, user u
WHERE a.id = u.id and a.type = 'post'
我得到的结果是
| Id | name | LikedBy |
---------------------------------------
| 100 | Amit | Alok, Arjun, Arpeet|
您可以看到结果中缺少另一行。
答案 0 :(得分:1)
试试这个:
ip address
注意:1。我假设帖子在父
中总是有空值答案 1 :(得分:0)
您不需要子查询。您只需要两个连接即可获取原始名称和喜欢的名称的值:
select a.parentid, u.name, group_concat(ul.name separator ', ') as likedby
from activity a join
user ul
on a.postedby = ul.userid join
user u
on a.parentid = u.userid
where a.type = 'like'
group by a.parentid, u.name;