@proelixir

Страница 647 из 1045
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


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


при лефт джоине

он добавляет все что нашлись

по предикату

предикат соответственно что айди поста равен айди в фейворитс

и потом добавляет все оставшееся из левой таблицы

т.е. остальные посты

но чтобы это «оставшиеся» не было всей таблицей, их получается надо сначала отфильтровать

надо взять вложенный запрос получается

я до сих пор не понимаю почему версия александра работает

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
возможно as p это вложенный запрос как раз
Это алиас. Чтобы можно было чётко именовать поля с одним именем из разных таблиц и при этом лениться писать полностью имя таблицы

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

Оказалось не так сложно

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

Alexander
07.07.2017
11:05:52
Я до сих пор путаю иннеры и аутеры, лефты и райты
мне лет 15 назад помогла одна картинка

после нее вопрос не было

там круги эйлера

она кстати потом стала чуть ли не референсной для объяснения откуда в 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 …) но я не очень понимаю как мне это сделать

Страница 647 из 1045