Size: a a a

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

2020 December 28

СC

Степан Combocons... in Сообщество Python Программистов
Alexander
Но надо чувствовать разницу между закрытым кодом и закрытыми данными
Вот тут я тебя понял. Благодарю.
источник

A

Alexander in Сообщество Python Программистов
Бензофуран Гетероцикл
а где в запросе мы указываем что такое m?)
поправил =)
источник

БГ

Бензофуран Гетероцик... in Сообщество Python Программистов
Alexander
поправил =)
Result: ambiguous column name: id
At line 1:
SELECT m.id, u.name, CASE WHEN u.id = m.to_id THEN "TO" ELSE "FROM" END AS "direction", m.text
FROM messages m
join users u on
 u.id = m.to_id or u.id = m.from_id
where m.to_id = ? or m.from_id = ?
order by id desc
источник

БГ

Бензофуран Гетероцик... in Сообщество Python Программистов
тут уже ему не нравится что id есть и в юзерах и в месседжах?
источник

A

Alexander in Сообщество Python Программистов
order by m.id desc
источник

БГ

Бензофуран Гетероцик... in Сообщество Python Программистов
окей, оно отрабатывает, но не выбирает ничего)
источник

A

Alexander in Сообщество Python Программистов
Бензофуран Гетероцикл
тут уже ему не нравится что id есть и в юзерах и в месседжах?
поставь вместо вопросов прямо юзер айди
источник

БГ

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

БГ

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

БГ

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

A

Alexander in Сообщество Python Программистов
ну добавь тогда from_id и to_id чтобы адресовать переписку, сгруппируй по ним и отсортируй
источник

A

Alexander in Сообщество Python Программистов
как вариант можно просто сджоинить сабселект (select max(m.id) as id, from_id, to_id from messages group by from_id,to_id)
источник

A

Alexander in Сообщество Python Программистов
по id же
источник

PS

Phillip Stimson in Сообщество Python Программистов
😏
источник

A

Alexander in Сообщество Python Программистов
т.е. итого:
SELECT m.id, u.name, CASE WHEN u.id = m.to_id THEN "TO" ELSE "FROM" END AS "direction", m.text 
FROM messages m
join users u on u.id = m.to_id or u.id = m.from_id
join (select max(id) as id, from_id, to_id from messages group by from_id, to_id) mm on mm.id = m.id
where m.to_id = ? or m.from_id = ?
источник

БГ

Бензофуран Гетероцик... in Сообщество Python Программистов
Alexander
т.е. итого:
SELECT m.id, u.name, CASE WHEN u.id = m.to_id THEN "TO" ELSE "FROM" END AS "direction", m.text 
FROM messages m
join users u on u.id = m.to_id or u.id = m.from_id
join (select max(id) as id, from_id, to_id from messages group by from_id, to_id) mm on mm.id = m.id
where m.to_id = ? or m.from_id = ?
страшна
источник

e

eff1c in Сообщество Python Программистов
or u.id = m.from_id
join (select max(id) as id, from_id, to_id from messages group by from_id, to_id) mm on mm.id = m.id
источник

e

eff1c in Сообщество Python Программистов
Можете объяснить?
источник

e

eff1c in Сообщество Python Программистов
Можно в войс, если долго писать
источник

БГ

Бензофуран Гетероцик... in Сообщество Python Программистов
Alexander
т.е. итого:
SELECT m.id, u.name, CASE WHEN u.id = m.to_id THEN "TO" ELSE "FROM" END AS "direction", m.text 
FROM messages m
join users u on u.id = m.to_id or u.id = m.from_id
join (select max(id) as id, from_id, to_id from messages group by from_id, to_id) mm on mm.id = m.id
where m.to_id = ? or m.from_id = ?
я вот так получаю практически то что надо:
SELECT CASE WHEN m.to_id = ? THEN m.from_id ELSE m.to_id END AS "interlocutor", u.name, m.text
FROM messages m
JOIN users u ON
 u.id = m.to_id OR u.id = m.from_id
WHERE m.to_id = ? OR m.from_id = ?
GROUP BY interlocutor
ORDER BY m.id DESC


Но блин, там текст не из последнего сообщения(
источник