Sql查询选择这个用户所在的每个组内每个人的所有消息
Posted
技术标签:
【中文标题】Sql查询选择这个用户所在的每个组内每个人的所有消息【英文标题】:Sql query select all messages from everybody inside every group where this one user is at 【发布时间】:2018-04-05 05:39:04 【问题描述】:我正在尝试从用户所在的 2 个组中获取来自每个用户的所有消息。但我不知道如何从每个组中获取所有消息。到目前为止,这是我的代码:
SELECT DISTINCT m.*
FROM `message` m
INNER JOIN users u
ON u.id = m.idUser
LEFT JOIN whats_app w
ON w.idUser= u.id
WHERE u.id = w.idUser
所以 2 个组中只有一个用户。我不想从 ONE 用户所在的组内的每个人那里获取所有消息。
这是一些简单的 sql 查询和示例:
create table users (
id int PRIMARY KEY NOT NULL,
name varchar(60)
);
create table whatsapp(
idUser ,
idGroup int
);
create table allGroups(
id int PRIMARY KEY NOT NULL,
name varchar(60)
);
create table message_send(
id int,
idUser int,
message text
);
INSERT INTO users(id, name) VALUES
(1, 'John'),
(2, 'Martijn'),
(3, 'Rick'),
(4, 'Vera'),
(5, 'Leon');
INSERT INTO allGroups(id, name) VALUES
(1, 'School'),
(2, 'Friends'),
(3, 'moreFriends'),
(4, 'secretmeeting');
INSERT INTO message_send(id, idUser, message) VALUES
(1, 2, 'How are you feeling today?'),
(2, 1, 'What up?'),
(3, 4, 'I am fine, you?'),
(4, 1, 'hi!');
【问题讨论】:
编辑您的问题并提供示例数据和所需结果。 我不确定你的问题是你想要获得一个地区的所有用户,然后获得这些用户的所有地区? 您的预期输出是什么?问题不清楚。 嗯,我希望看到每条消息都作为输出。但是当我已经将组名放在 message_send 表中时,它就可以了。 【参考方案1】:create table message_send(
id int,
idUser int,
idGroup int,
message text
);
像这样创建消息表,然后直接加入用户和组,您将获得表 watsapp 不需要的输出
select b.name,message
from
message_send as a,
users as b
where
a.idUser=b.id
同样加入组表
【讨论】:
以上是关于Sql查询选择这个用户所在的每个组内每个人的所有消息的主要内容,如果未能解决你的问题,请参考以下文章