
Alexander
07.07.2017
08:55:51
select p.*, f.post_id from post as p left join favorites as f on p.post_id=f.post_id and f.user=10

Dmitry
07.07.2017
08:56:32
da, ya ta k dumal, no ne uspel potestit'
Всё работает
Крутяк, спс!

Google

Dmitry
07.07.2017
09:04:46
Даже в экто о_О))

Alexander
07.07.2017
09:07:29
ээээ, а как ты можешь хейтить Elixir если ты таже в join не можешь?

Dmitry
07.07.2017
09:13:06
Во первых с чего ты решил, что я его хейчу, а во вторых - что мне мешает его хейтить то?)
Ну а в третьих - покопаться так тут каждый первый не могут джойн

Maxim
07.07.2017
09:15:03
во 1) хуле ты мне сделаешь
вовторых пошел нахуй втетьих
3)что ты мне сделаешь, я в
другом городе
за мат извени

Alexander
07.07.2017
09:15:32
А за неграмотность?

Maxim
07.07.2017
09:15:45
это цитата
это же мем...
эх...

Alexander
07.07.2017
09:15:57
О. Я отстал. :(

Kioshimafx
07.07.2017
09:19:23

Rumata
07.07.2017
09:20:48

Can
07.07.2017
09:24:39
разобрался?

Google

Can
07.07.2017
09:24:40
я отходил
смотри у тебя лефт джоин как работает
берет все пересечение

Kioshimafx
07.07.2017
09:24:52
да все уже :)

Can
07.07.2017
09:24:57
как в итоге?

Kioshimafx
07.07.2017
09:25:06
select p.*, f.post_id from post as p left join favorites as f on p.post_id=f.post_id and f.user=10

Dmitry
07.07.2017
09:25:22
Короче фишка была засунуть user id в join on а не в where

Can
07.07.2017
09:26:11
чет не понимаю логики
лефт джоин выдергивает всю таблицу
левую
и пересечение это те где выполняется предикат
и поидее ты сюда как всю левую таблицу скармливаешь
а не как только те, что принадлежат юзерам

Kioshimafx
07.07.2017
09:27:10
ага я так-же размышял, но тут суть самого кейса накладывается

Can
07.07.2017
09:27:33
логика моего запроса была в том что ты сначала левую таблицу делаешь уже из постов юзера
и потом джойнишь с фейворит
там найдет не найдет все равно добавит
как раз ожидаемое поведение

Dmitry
07.07.2017
09:28:11
Теряются посты тогда

Google

Dmitry
07.07.2017
09:30:11
А вот если таблицу которую джойнить предварительно фильтруешь - то как раз там оно сперва выкидывает все избранные других пользователей
И потом либо нужные избранные либо ноль

Can
07.07.2017
09:31:09
при лефт джоине
он добавляет все что нашлись
по предикату
предикат соответственно что айди поста равен айди в фейворитс
и потом добавляет все оставшееся из левой таблицы
т.е. остальные посты
но чтобы это «оставшиеся» не было всей таблицей, их получается надо сначала отфильтровать
надо взять вложенный запрос получается
я до сих пор не понимаю почему версия александра работает

Dmitry
07.07.2017
09:33:41

Can
07.07.2017
09:33:47
возможно as p это вложенный запрос как раз

Dmitry
07.07.2017
09:34:01
Смысл смысл был в другом

Can
07.07.2017
09:34:16
в чем?)

Dmitry
07.07.2017
09:34:27
В том чтобы не потерять
Посты, которые не избранные для пользователя

Can
07.07.2017
09:34:51
ну так не потеряются

Dmitry
07.07.2017
09:35:00
Смотри

Google

Dmitry
07.07.2017
09:35:18
К примеру есть 1 пост, и его залайкал другой человек
Тогда после твоего Джойна будет одна строка с этим постом и Лайком соседа

Can
07.07.2017
09:35:55
все посты -> все посты пользователя -> лефт джоин с фейворитс и предикатом что пост залайкал этот пользвоатель.

Admin
ERROR: S client not available

Can
07.07.2017
09:36:00
нет)
предикат же что этот пост залайкал этот человек
on

Dmitry
07.07.2017
09:37:08
Так я про это и говорю
Что у Александра предикат в джоине
И это было то чего я сразу не понял
Потому что я думал про предикат в where
А тогда все теряется

Can
07.07.2017
09:41:15
понял

Анастасия
07.07.2017
09:47:55
user.id = 10 or user.id is null не прокатит?

Dmitry
07.07.2017
09:56:45
Такое может быть прокатило если джойнить все три таблицы
А так - как только есть один лайк - сразу нету строчки с null

Alexander
07.07.2017
10:21:08

Dmitry
07.07.2017
10:25:05
Всё, разобрался короче с этими жойнами
Оказалось не так сложно

Google

Dmitry
07.07.2017
10:25:23
Можно было и раньше это сделать, как то не приходилось)

Alexander
07.07.2017
11:05:52
после нее вопрос не было
там круги эйлера
она кстати потом стала чуть ли не референсной для объяснения откуда в sql ноги растут

Dmitry
07.07.2017
11:08:38
Мне эта картинка не помогла
Мне википедия помогла
Я почему то не знал, что в предикаты жойна можно писать вообще все - я думал, что только то что относится к обеим таблицам
Это какая то хитрая магия

Ilnur
10.07.2017
14:29:29
https://s-media-cache-ak0.pinimg.com/originals/13/7c/a9/137ca9e2a4de70b11d0ae475997e8004.gif

Константин
10.07.2017
14:33:25
Еще +1 и 400 будет

Aldar
10.07.2017
18:04:40
https://www.youtube.com/watch?v=PRVJvpNsTeM

Mikhail
10.07.2017
20:37:46
люди прибывают, но счётчик выше 399 не накручивается...

Anton
10.07.2017
20:38:48
Ребят а подскажите по Ecto у меня уже есть запись которую я достал до ранее, и я хочу с ней делать то же самое что я делаю когда пишу from(record in Record …) но я не очень понимаю как мне это сделать