Size: a a a

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

2020 December 28

БГ

Бензофуран Гетероцик... in Сообщество Python Программистов
Надо проверить!
источник

БГ

Бензофуран Гетероцик... in Сообщество Python Программистов
Бензофуран Гетероцикл
SELECT CASE WHEN m.to_id = 1 THEN m.from_id ELSE m.to_id END AS "interlocutor", u.name, m.id, m.text
FROM messages m
 JOIN users u ON
   u.id = m.to_id OR u.id = m.from_id
WHERE m.to_id = 1 OR m.from_id = 1
GROUP BY interlocutor
HAVING m.id = max(m.id)
ORDER BY m.id DESC
Иии, оно неправильно выводит name!
источник

БГ

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

БГ

Бензофуран Гетероцик... in Сообщество Python Программистов
Бензофуран Гетероцикл
name выходит равным нейму того юзера который последним писал сообщение
@alext18, не сильно занят?
Тут, как я понял, херня выходит потому что JOIN ... ON ... OR ... дублирует строки с сообщением
источник

AT

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

AT

Alexander T in Сообщество Python Программистов
а, понял проблему. ну да)
источник

AT

Alexander T in Сообщество Python Программистов
я поэтому и предложил структуру поменять. базу-то под схему использования проектировать надо
источник

БГ

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

БГ

Бензофуран Гетероцик... in Сообщество Python Программистов
Бензофуран Гетероцикл
@alext18, не сильно занят?
Тут, как я понял, херня выходит потому что JOIN ... ON ... OR ... дублирует строки с сообщением
Законстылено!

SELECT
 CASE WHEN m.to_id = ? THEN sender.id ELSE receiver.id END interlocutor,
 CASE WHEN m.to_id = ? THEN sender.name ELSE receiver.name END username,
 sender.name msg_sender,
 m.text msg_text
FROM messages m
 JOIN users sender ON
   sender.id = m.from_id
 JOIN users receiver ON
   receiver.id = m.to_id
WHERE m.to_id = ? OR m.from_id = ?
GROUP BY interlocutor
HAVING m.id = max(m.id)
ORDER BY m.id DESC
источник

БГ

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

AT

Alexander T in Сообщество Python Программистов
with … as param
select … param param-pam-pam
источник

БГ

Бензофуран Гетероцик... in Сообщество Python Программистов
Alexander T
with … as param
select … param param-pam-pam
Всеми базами поддерживается?
источник

👑️

👑OGURCHIK🖤 ️ in Сообщество Python Программистов
Бензофуран Гетероцикл
Законстылено!

SELECT
 CASE WHEN m.to_id = ? THEN sender.id ELSE receiver.id END interlocutor,
 CASE WHEN m.to_id = ? THEN sender.name ELSE receiver.name END username,
 sender.name msg_sender,
 m.text msg_text
FROM messages m
 JOIN users sender ON
   sender.id = m.from_id
 JOIN users receiver ON
   receiver.id = m.to_id
WHERE m.to_id = ? OR m.from_id = ?
GROUP BY interlocutor
HAVING m.id = max(m.id)
ORDER BY m.id DESC
🤔еб жеж
источник

AT

Alexander T in Сообщество Python Программистов
Бензофуран Гетероцикл
Всеми базами поддерживается?
не знаю, вроде да. еще, кстати, есть вот такая штука. как вытащить чат между двумя в твоей схеме.
select … from messages where to_id in (id1, id2) and from_id in (id1, id2)
источник

БГ

Бензофуран Гетероцик... in Сообщество Python Программистов
Alexander T
не знаю, вроде да. еще, кстати, есть вот такая штука. как вытащить чат между двумя в твоей схеме.
select … from messages where to_id in (id1, id2) and from_id in (id1, id2)
Про in я в курсе)
источник

БГ

Бензофуран Гетероцик... in Сообщество Python Программистов
Alexander T
with … as param
select … param param-pam-pam
+, чисто показал магию SQL :3
источник

K

KarmaBot in Сообщество Python Программистов
Бензофуран Гетероцикл
+, чисто показал магию SQL :3
Вы увеличили карму Alexander T до 3372.69 (+54.17)
источник

БГ

Бензофуран Гетероцик... in Сообщество Python Программистов
+ @borntohack тоже за помощь со SQL)
источник

K

KarmaBot in Сообщество Python Программистов
Бензофуран Гетероцикл
+ @borntohack тоже за помощь со SQL)
Вы увеличили карму Alexander до 1783.67 (+54.17)
источник

БГ

Бензофуран Гетероцик... in Сообщество Python Программистов
Alexander T
with … as param
select … param param-pam-pam
Или я чего-то не понял или это так не работает)
источник