Доброго времени суток! Прошу помочь, делаю себе проект, бэкенд на nodejs + sqlite. В проекте есть чат, без каналов, просто 1 на 1. В бэкенде очень слаб, поэтому не судите строго, может я неправильно таблицы построил. Есть такие таблицы:
db.run(`CREATE TABLE IF NOT EXISTS user (
id integer PRIMARY KEY AUTOINCREMENT,
firstName varchar(30),
lastName varchar(50),
email varchar(150),
phone varchar(12),
address varchar(255),
photo varchar(255),
hash varchar(255),
token varchar(255)
)`);
db.run(`CREATE TABLE IF NOT EXISTS chat (
id integer PRIMARY KEY AUTOINCREMENT,
lastMessage varchar(255)
)`);
db.run(`CREATE TABLE IF NOT EXISTS chatUser (
id integer PRIMARY KEY AUTOINCREMENT,
idChat integer,
idUser integer,
FOREIGN KEY (idChat) REFERENCES chat(id) ON DELETE CASCADE,
FOREIGN KEY (idUser) REFERENCES user(id) ON DELETE CASCADE
)`);
db.run(`CREATE TABLE IF NOT EXISTS message (
id integer PRIMARY KEY AUTOINCREMENT,
idChat integer,
idUser integer,
text varchar(255),
FOREIGN KEY (idChat) REFERENCES chat(id) ON DELETE CASCADE,
FOREIGN KEY (idUser) REFERENCES user(id) ON DELETE CASCADE
)`);
В chatUser я заношу всегда только двух пользователей,т.е. текущего пользователя и того, с кем переписываюсь. И я пытаюсь сделать запрос, из которого я получаю список чатов текущего пользователя, с именем и фото человека, с кем переписываюсь, с id чата и последним сообщением из этого чата. Получилось что-то такое:
db.all(`
SELECT chatUser.idChat,
user.firstName,
user.lastName,
user.photo,
chat.lastMessage
FROM user, chatUser, chat
WHERE user.id = chatUser.idUser
AND chat.id = chatUser.idChat
AND user.id != ?
`, [id], function(error, chats) {
...
}
где id - это id текущего пользователя. Это работало, пока я не зашел с другого пользователя, у которого вместо одного чата выводит еще лишних два. Помогите пожалуйста построить запрос корректно, я больше ничего не придумал.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Так я получаю общую сумму пользователя с ID 1, но мне нужно вывести пользователя у которого самый большой баланс
Приветствую всехДелаю небольшую програмку, которая работает с данными (читает файлы и создает свои), пишу на C#
ЗдравствуйтеЕсть такая картинка