Size: a a a

Сообщество Python Программистов

2020 December 28

БГ

Бензофуран Гетероцик... in Сообщество Python Программистов
Alexander T
Какая-то содомия про скуэль была, но поскольку вы не любите реплаи, начало найти не смог.
Начало тут
источник

👑️

👑OGURCHIK🖤 ️ in Сообщество Python Программистов
Бензофуран Гетероцикл
За такой SQL-запрос можно больно получить по голове?

SELECT DISTINCT to_id, name, text
FROM (
   SELECT *
   FROM (
           select id, from_id as to_id, text
           from messages
           where to_id == ?
           union
           select id, to_id, text
           from messages
           where from_id == ?
   )
   JOIN users ON
   to_id = users.id
   ORDER BY id DESC
)
GROUP BY to_id
ух увлекся вложениями 😀
источник

БГ

Бензофуран Гетероцик... in Сообщество Python Программистов
Таблицы создаются вот так:

CREATE TABLE IF NOT EXISTS users (
   id INTEGER PRIMARY KEY NOT NULL,
   ip TEXT UNIQUE,
   name TEXT UNIQUE
);
CREATE TABLE IF NOT EXISTS messages (
   id INTEGER PRIMARY KEY NOT NULL,
   from_id INTEGER,
   to_id INTEGER,
   text TEXT,
   FOREIGN KEY("from_id") REFERENCES "users"("id"),
   FOREIGN KEY("to_id") REFERENCES "users"("id")
);
источник

БГ

Бензофуран Гетероцик... in Сообщество Python Программистов
Задача - имея ID юзера вытащить информацию о чатах со следующими полями для каждого чата:
• id собеседника
• name собеседника
• text последнего сообщения в этом чате
источник

БГ

Бензофуран Гетероцик... in Сообщество Python Программистов
👑OGURCHIK🖤 ️
ух увлекся вложениями 😀
Решил как смог (оказалось что хуёво смог)
источник

БГ

Бензофуран Гетероцик... in Сообщество Python Программистов
Alexander T
Какая-то содомия про скуэль была, но поскольку вы не любите реплаи, начало найти не смог.
В принципе там уже решилось (селектом из селекта и тремя джоинами), но было бы интересно посмотреть твой вариант))
источник

👑️

👑OGURCHIK🖤 ️ in Сообщество Python Программистов
SELECT users.name, messages.to_id, messages.text
FROM messages
INNER JOIN users ON users.id=messages.to_id where messages.from_id = ?;
источник

👑️

👑OGURCHIK🖤 ️ in Сообщество Python Программистов
что то в таком стиле но я с джоин так себе дружу
источник

БГ

Бензофуран Гетероцик... in Сообщество Python Программистов
👑OGURCHIK🖤 ️
SELECT users.name, messages.to_id, messages.text
FROM messages
INNER JOIN users ON users.id=messages.to_id where messages.from_id = ?;
Если бы всё было так просто))
Сообщения внутри переписки одного пользователя с другим это и from_id и to_id равные id того юзера которого мы ищем
источник

БГ

Бензофуран Гетероцик... in Сообщество Python Программистов
Бензофуран Гетероцикл
Если бы всё было так просто))
Сообщения внутри переписки одного пользователя с другим это и from_id и to_id равные id того юзера которого мы ищем
Тут и начинается игра очком)
источник

AT

Alexander T in Сообщество Python Программистов
Что-то типа
select users.id uid, users.name name, messages.text text from (select max(id) from messages group by id) r left join messages on r.id = messages.id left join users on messages.from_id = users.id
источник

AT

Alexander T in Сообщество Python Программистов
Бензофуран Гетероцикл
Если бы всё было так просто))
Сообщения внутри переписки одного пользователя с другим это и from_id и to_id равные id того юзера которого мы ищем
А, «в этом чате» - типа диалог?
источник

AT

Alexander T in Сообщество Python Программистов
Или чат типа телеги?
источник

БГ

Бензофуран Гетероцик... in Сообщество Python Программистов
Alexander T
Что-то типа
select users.id uid, users.name name, messages.text text from (select max(id) from messages group by id) r left join messages on r.id = messages.id left join users on messages.from_id = users.id
Другой Александр предложил очень похожее решение
источник

БГ

Бензофуран Гетероцик... in Сообщество Python Программистов
Alexander T
А, «в этом чате» - типа диалог?
Диалог двух юзеров
источник

AT

Alexander T in Сообщество Python Программистов
Тогда мое не подходит. Я еще удивился, зачем он там фром-ту обрабатывал
источник

👑️

👑OGURCHIK🖤 ️ in Сообщество Python Программистов
Бензофуран Гетероцикл
Если бы всё было так просто))
Сообщения внутри переписки одного пользователя с другим это и from_id и to_id равные id того юзера которого мы ищем
тогда непонял
источник

AT

Alexander T in Сообщество Python Программистов
Было б в тыщу раз проще с сущностью «чат айди» и таблицей соответствий юзеров
источник

БГ

Бензофуран Гетероцик... in Сообщество Python Программистов
👑OGURCHIK🖤 ️
тогда непонял
источник

БГ

Бензофуран Гетероцик... in Сообщество Python Программистов
Alexander T
Было б в тыщу раз проще с сущностью «чат айди» и таблицей соответствий юзеров
Ля, а вот это идея
источник