@devops_ru

Страница 1572 из 4568
Александр
21.11.2016
23:04:57
Возможно что-то и поменялось и теперь можно использовать, я не знаю честно говоря.

Cate
21.11.2016
23:04:59
в логах покажут.

я не понимаю что эти парамсы делают

#{where}", params[:uid], platform.id])

Google
Cate
21.11.2016
23:05:48
ах ах.

Александр
21.11.2016
23:06:28
У тебя тело запроса и рубикод вместе я хз

Cate
21.11.2016
23:06:34
это то, что подставляется вместо ? наверное.

Александр
21.11.2016
23:07:04
@offers = AdvCampaign.find_by_sql ([" ", params[:uid], platform.id])

это код руби

mysql я вырезал

Но я так подозреваю, что ты права и эти данные подставляются из функций кода руби

Cate
21.11.2016
23:08:49
просто ребята в руби чати сказали что так глупые люди подставляют.

AdvCampaign.find_by_sql ( [ "SELECT c.* FROM adv_campaigns c left join adv_campaigns_platforms cp ON cp.adv_campaign_id = c.id WHERE AND cp.platform_id != :platform_idLEFT JOIN statistics s ON c.id=s.campaign_id AND s.type_id=#{STATS_TYPE_APPROVAL} AND s.uid=:uid AND s.platform_id=:platform_id", { uid: params[:uid], platform_id: platform.id } ]

надо не так джойнить.

Александр
21.11.2016
23:10:19
Ты можешь вообще join не использовать, а делать всё селектом

:D

Может проблема в том, что у тебя where стоит в середине join'ов? :D

Google
Cate
21.11.2016
23:11:45
@offers = AdvCampaign.find_by_sql (["SELECT c.* FROM adv_campaigns c LEFT JOIN statistics s ON c.id=s.campaign_id AND s.type_id=#{STATS_TYPE_APPROVAL} AND s.uid=? AND s.platform_id=? WHERE s.id IS NULL AND c.status=3 LEFT JOIN adv_campaigns_platforms as cp ON s.platform_id = cp.platform_id WHERE cp.adv_campaign_id IS NULL #{where}", params[:uid], platform.id])

вообще проблему я уже нашла, я не тот запрос правила))

у меня же их два аналогичных))

Александр
21.11.2016
23:12:10
Молодец. ?

Cate
21.11.2016
23:12:22
но мне же надо этот толково составить)

а как же не джойнить?

вот сейчас хорошо выглядит.

@offers = AdvCampaign.find_by_sql (["SELECT c.* FROM adv_campaigns c LEFT JOIN statistics s ON c.id=s.campaign_id LEFT JOIN adv_campaigns_platforms as cp ON s.platform_id = cp.platform_id AND s.type_id=#{STATS_TYPE_APPROVAL} AND s.uid=? AND s.platform_id=? WHERE s.id IS NULL AND c.status=3 AND cp.adv_campaign_id IS NULL #{where}", params[:uid], platform.id])

так может..

Александр
21.11.2016
23:16:15
Я твою тарабарщину не понимаю :D зачем нул?

Cate
21.11.2016
23:17:42
ну если там будет ноль - то данные получим, а если не будет ноль - то не получим, верно ведь?

Александр
21.11.2016
23:18:00
а null это 0? Не знал :D

Cate
21.11.2016
23:18:12
почему ноль?

Александр
21.11.2016
23:19:54
Я просто не понимаю к чему про 0? Если в строке 0, то и like 0 или not like 0

Cate
21.11.2016
23:23:49
там в строке пустота

но это int

SELECT c.* FROM adv_campaigns c LEFT JOIN statistics s ON c.id=s.campaign_id LEFT JOIN adv_campaigns_platforms as cp ON s.platform_id = cp.platform_id AND s.type_id=3 AND s.uid='5' AND s.platform_id=4 WHERE s.id IS NULL AND c.status=3 AND cp.adv_campaign_id IS NULL;

Вот так - работает.

Александр
21.11.2016
23:25:24
Голый запрос работает, а в коде не работает? Потому что я не вижу разницы между запросами

Я правильно понял?

Google
Cate
21.11.2016
23:27:24
я пытаюсь его составить, для начала.

всеголишь)

Александр
21.11.2016
23:28:26
А чего в код лезешь тогда :D

Не понимаю я этих женщин(

Пиши что у тебя сейчас не выводится в запросе?

Cate
21.11.2016
23:31:02
Мне к запросу надо добавить кусочек, чтоб отфильтровать лишнее.

SELECT c.* FROM adv_campaigns c LEFT JOIN statistics s ON c.id=s.campaign_id AND s.type_id=3 AND s.uid='5' AND s.platform_id=4 WHERE s.id IS NULL AND c.status=3 Это изначальный запрос.

Это соседняя табличка

ctrl=# \d adv_campaigns_platforms; Table "public.adv_campaigns_platforms" Column | Type | Modifiers —---------------+---------+---------— adv_campaign_id | integer | platform_id | integer |

В ней такое содержимое

adv_campaign_id | platform_id —---------------+------------- 186 | 4 187 | 6 188 | 6 188 | 5 188 | 7 188 | 4 | 4 | 5 | 4 | 5 | 6 | 4 | 5 | 6 10 | 5 10 | 6 | 4 25 | 4 | 4 27 | 4 33 | 4 39 | 4 44 | 4 126 | 4 195 | 4 | 4 | 4 235 | 4 | 4 197 | 4 | 4 | 4 | 4 | 4 | 4 | 4 208 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 217 | 4 | 4 | 4 | 4 209 | 4 | 4 | 4 | 4 206 | 4

Мне же нужно вот что, если в этой соседней табличке есть в platform_id есть s.platform_id, но adv_campaign_id != s.campaign_id то выводить, а если равен то не выводить.

Cate
21.11.2016
23:34:58
Саша. а запрос то этот не цикличен.

Nikolay
21.11.2016
23:36:32
намана

простыня в чатике

Alexander
21.11.2016
23:40:49
это вопрос про sql, имеет смысл спросить в чатиках, связанных с субд

там лучше ответят

Cate
21.11.2016
23:40:53
Пустота.

adv_campaign_id | platform_id —---------------+------------- 186 | 4 187 | 6 188 | 6 188 | 5 188 | 7 188 | 4 | 4 | 5 | 4 | 5 | 6 | 4 | 5

Google
Александр
21.11.2016
23:41:12
т.е. в s.campaign_id, как ты показала есть, а в adv_campaign_id?

Так стоп

наоборот

:D

s.campaign_id есть null?

Cate
21.11.2016
23:42:44
не не. я тебе cp. показала.

WHERE s.id IS NULL - эту строку мы не трогаем.

Александр
21.11.2016
23:43:10
женщина прекрати :D

Cate
21.11.2016
23:43:13
она уже была и хорошо себя зарекомендовала))

в статистике ее может не быть. такой строки с таким id

Admin
ERROR: S client not available

Cate
21.11.2016
23:44:53
вообще.

ctrl=# \d statistics; Table "public.statistics" Column | Type | Modifiers —----------------+-----------------------------+--------------------------------------------------------- id | integer | not null default nextval('statistics_id_seq'::regclass) views | integer | not null default 0 views_uniques | integer | not null default 0 clicks | integer | not null default 0 leads | integer | not null default 0 assigns | integer | not null default 0 created_at | timestamp without time zone | not null updated_at | timestamp without time zone | not null campaign_id | integer | not null click_uniques | integer | not null default 0

Они никогда не могут быть нулями.

но их может не быть впринципе.

Alexander
21.11.2016
23:47:03
я бы предложил сначала сделать тестовую базу, задеплоить куда-нибудь, набить тестовыми данными, потом поставить задачи (а как мне сделать запрос ... описание запроса) по пунктам и уже это скинуть в чат сюда и в чаты по субд

Александр
21.11.2016
23:47:55
А теперь у меня вопрос, нахуя ты в запросе просишь выводить AND cp.adv_campaign_id IS NULL ????

Если тебе эти значения не нужны.

:D

Alexander
21.11.2016
23:48:11
если это mysql, то какой-нибудь phpmyadmin, если postgres - phppgadmin, дать доступ на чтение ну и все зайдут потыкать твою базу

Google
Александр
21.11.2016
23:48:43
where cp.adv_campaign_id IS NULL

зачем оно тебе?

Cate
21.11.2016
23:48:55
погоди.

ты путаешь.

тут три таблицы.

Александр
21.11.2016
23:49:18
я вижу 3 таблицы

Cate
21.11.2016
23:49:45
adv_campaigns = c statistics = s adv_campaigns_platforms as cp

а.

Александр
21.11.2016
23:50:11
Угу

Что а?

Cate
21.11.2016
23:50:19
я поняла. Я не с тем сравниваю.

Александр
21.11.2016
23:50:24
:D

Cate
21.11.2016
23:51:06
Но нет.

SELECT c.*, cp.* FROM adv_campaigns c LEFT JOIN statistics s ON c.id=s.campaign_id LEFT JOIN adv_campaigns_platforms as cp ON s.platform_id = cp.platform_id AND s.type_id=3 AND s.uid='5' AND s.platform_id=4 WHERE s.id IS NULL AND c.status=3 AND cp.adv_campaign_id IS NULL;

Nikolay
21.11.2016
23:51:08
спааайсы

Александр
21.11.2016
23:51:34
Смотри ещё раз у тебя 2 таблицы

третью не берем

Cate
21.11.2016
23:51:40
три

Nikolay
21.11.2016
23:51:42
время 4 утра; почему бы не бмазаться скулем, действительно

Дмитрий
21.11.2016
23:51:55
?

Александр
21.11.2016
23:51:57
у тебя две таблицы s.platform_id = cp.platform_id

Александр
21.11.2016
23:52:01
Я про эту часть

Страница 1572 из 4568