我有这两张桌子:
CREATE TABLE `users`
(
`id` INT NOT NULL AUTO_INCREMENT,
`name` VARCHAR (80) NOT NULL,
`email` VARCHAR (150) NOT NULL,
`password` VARCHAR (80) NOT NULL,
PRIMARY KEY (`id`)
);
CREATE TABLE `messages`
(
`id` BIGINT NOT NULL AUTO_INCREMENT,
`sender_id` INT NOT NULL,
`receiver_id` INT NOT NULL,
`message` VARCHAR (300) NOT NULL,
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
`is_read` TINYINT(1) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
FOREIGN KEY (`sender_id`) REFERENCES users (id),
FOREIGN KEY (`receiver_id`) REFERENCES users (id)
);
我想选择我已向其发送消息或已向我发送消息的用户。
为此,我创建了一个在查询请求中有我的 userId 的控制器:
static getAllWithMessages(req, res) {
UsersModel.findAllBy(
[req.query.userId, req.query.userId, req.query.userId],
(err, results) => {
if (err) {
res.status(500).send(err);
}
res.send(results);
}
);
}
并尝试此选择:
db.query(
"SELECT users.id, users.name, users.email FROM users RIGHT JOIN messages AS messages_send ON (users.id = messages_send.sender_id) RIGHT JOIN messages AS messages_received ON (users.id = messages_received.receiver_id) WHERE users.id <> ? AND (messages_send.receiver_id = ? OR messages_received.sender_id = ?) GROUP BY users.id ORDER BY name ASC ",
where,
callback
);
但我只有向我发送消息的用户。我不知道如何添加我已发送消息的用户...我知道我的请求非常糟糕 :(
如果你有一些想法:)
谢谢