Email or username:

Password:

Forgot your password?
Top-level
Мя :sparkles_lesbian:

Внезапно, мой написанный из головы запрос с двумя подзапросами заработал с первого раза....шта...

29 comments
Мя :sparkles_lesbian:

Запросики кажется есть. Страшненькие немного, но щитоподелать если так работает фильтр по максимальному значению в SQL
Надеюсь у SQLite достаточно умный оптимизатор. Хотя, если база разрастётся, можно будет и смигрировать в постгрес

Мя :sparkles_lesbian:

Хорошо что я решила сначала описать результат а потом уже писать код
Где-то в середине всплыл такой вопрос «а что если...» из-за которого возможно придётся переосмыслить половину архитектуры....

Мя :sparkles_lesbian:

А мозг все ещё в состоянии «ьеьььеьеьье :blobcatgooglymelt:»

Мя :sparkles_lesbian:

Получается, три часа работы в состоянии ьеьеьеьеьеь нужны были лишь для того, чтобы задаться тем самым вопросом «а что если» и в итоге добавить ещё одну сущность и переписать все запросы...

Мя :sparkles_lesbian:

Задалась вторым вопросом «а что если»
Ааааааааааааааааа

Мя :sparkles_lesbian: replied to Мя

Кажется я задаю слишком много вопросов. С другой стороны, вроде логичных...но теперь возникшую сложность надо как-то решать, а я ьеььеьеьеьее....

Мя :sparkles_lesbian: replied to Мя

Теперь селекты станут ещё более многоуровневовые, видимо...мозг просыпайся....

Мя :sparkles_lesbian: replied to Мя

...и вылез граничный случай, который крайне редкий но если я его проигнорирую то меян будет бесить его возможность

аааааааааааааааааа

Мя :sparkles_lesbian: replied to Мя

Я не хочу воспроизводить гит в реляционной базе но я не знаю как ещё корректно обойти этот граничный случай...
Можно обойти его не совсем корректно, и надеяться что коммитов с одинаковым таймштампом не будет среди тех что надо обработать

Мя :sparkles_lesbian: replied to Мя

Я потерялась в селектах и группировках и вспомнила о существовании вьюх в SQL

Мя :sparkles_lesbian: replied to Мя

У меня смутное ощущение что мне могут помочь оконные функции
У меня часто бывает такое ощущение, потому что я их плохо понимаю, и они для меня что-то загадочное и магическовое...

Мя :sparkles_lesbian: replied to Мя

Как я понимаю, они позволяют нарезать селект на группы без собственно группировки, и потом эти группы можно отдельно друг от друга сортировать, и выбирать то самое максимальное значение что мне нужно

Осталось только переделать тестовую базу под новую схему и потестировать....

Мя :sparkles_lesbian: replied to Мя

стоп у меня кажется получился тот же самый group by...
с л о ж н о

Мя :sparkles_lesbian: replied to Мя

Поняв что я уперлась в тупик, я снова задалась вопросом «а что если»
На этот раз, «а что если предыдущий раз когда я задалась вопросом, я приняла неверное решение, и зря полезла всё переделывать из простого в сложное?»

Мя :sparkles_lesbian: replied to Мя

Почему я утром была такая бодрая и продуктивная, а щас смотрю на написанное для себя ТЗ как баран на новые ворота, и не могу додумать, что мне нужно поменять чтобы пробросить в API кусочек ещё одной сущности...

Мя :sparkles_lesbian: replied to Мя

Обидно, что как только я вроде бы подебила мозг, работать отказался ноутбук...

Мя :sparkles_lesbian: replied to Мя

Обидно, что как только я вроде бы подебила и ноутбук и мозг, пришёл РКН и сказал "сегодня без ваергарда" :blobcattableflip:
Как мне до домашнего компа достукиваться, оло

mrcopperbeard replied to Мя

@mo звучит хрупко. Нужно будет постоянно следить за таймстампами при записи в БД. У меня недавно была возможно похожая ситуация. Я решил записать в таблицу истории статусов два статуса подряд. В одной транзакции. И я не учёл, что запрос на запись использует now в БД. И оно считается на момент коммита транзакции. А все запросы на чтение просто искали max по таймстампу. И в моём случае записей с максимальным таймстампом было две. И бралась первая по порядку, с неактуальным значением статуса.

Мя :sparkles_lesbian: replied to mrcopperbeard

@mrcopperbeard да, но в моем случае таймштампы берутся из гита, и база знает только о тех коммитах которые засветились в CI
Чтобы сломать такую логику, нужно сделать несколько коммитов с одинаковым таймштампом (в теории возможно при ребейзе), и запустить линтер для *каждого*. А запускать для каждого не имеет смысла, обычно запускают на последнем из пуша

Go Up