Sql查询从这个用户所在的每个组中的每个人中选择所有消息

时间:2017-10-24 12:11:40

标签: sql select phpmyadmin inner-join

我试图从每个用户那里获取用户所在的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

因此,两组中只有一个用户。我不想收到ONE用户所在群组内所有人的所有消息。

这是一些简单的SQL查询als示例:

    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!');

1 个答案:

答案 0 :(得分:0)

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

同样加入群组表