@devops_ru

Страница 1574 из 4568
Cate
22.11.2016
00:24:27
http://pastebin.com/cUuvuq1Y Стаститика http://pastebin.com/8jXLJPwh Кампании http://pastebin.com/guD5Vtdq Странная табличка соотвествий

Только такие дампы могут усугубить

Artur
22.11.2016
00:25:03
не нужны данные

Google
Artur
22.11.2016
00:25:20
задача не мформулирована вообше никак

Cate
22.11.2016
00:26:24
Мне нужно чтоб апи выбирало только те кампании, которые не перечислены или перечислены в списке

апи выбирает тем запросом, что я прислала.

Artur
22.11.2016
00:27:09
ну и при чём тут

or cp.adv_campaign_id !=s.platform_id

Alexander
22.11.2016
00:28:58
я предлагаю декомпозировать задачу на мелкие, сделать через циклы и маленькие запросы, а потом отрефакторить уже

так будет понятнее

Cate
22.11.2016
00:29:24
LEFT JOIN adv_campaigns_platforms as cp ON s.platform_id = cp.platform_id

Вот так было

Cate
22.11.2016
00:29:51
Вот и я о чем

Google
Artur
22.11.2016
00:29:57
а в коде её повторить с тем же успехом не получится

Alexander
22.11.2016
00:30:13
ну, она по крайней мере понятна будет

что такое компания платформа, это метафизика какая-то

Artur
22.11.2016
00:30:30
я всё ещё не вижу задачи

Alexander
22.11.2016
00:31:13
это 2 таблички, связанные М:Н?

или нет?

Artur
22.11.2016
00:31:32
что такое мн

там один ко многим

Alexander
22.11.2016
00:31:43
ну, 1:1, 1:М, М:Н

типы связей

Artur
22.11.2016
00:31:59
или многие ко многим но нас интересует 1 сторона

Cate
22.11.2016
00:32:23
я всё ещё не вижу задачи
задача не выводить то, что отфильтровано.

Alexander
22.11.2016
00:32:40
тогда JOIN ( https://ru.wikipedia.org/wiki/Join_(SQL) ) тут примеры

Artur
22.11.2016
00:32:44
и асудя по выводу там один ко многим но множество срезается условиями. остаётся 1:1 или 1:0

задача не выводить то, что отфильтровано.
ну и при чём тут or cp.adv_campaign_id !=s.platform_id

Cate
22.11.2016
00:34:04
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;

у меня вот.

Google
Artur
22.11.2016
00:35:24
оу у меня описка

не платформа а компания

SELECT c.* FROM adv_campaigns as c LEFT JOIN statistics as s ON c.id=s.campaign_id AND s.type_id=? AND s.uid=? LEFT JOIN adv_campaigns_platforms as cp ON s.platform_id = cp.platform_id WHERE s.id IS NULL AND c.status=3 — это я не понял зачем AND cp.adv_campaign_id IS NULL and ( s.platform_id != ? —???? s.platform_id is null or cp.adv_campaign_id !=s.platform_id ) укоротил
SELECT c.* FROM adv_campaigns as c LEFT JOIN statistics as s ON c.id=s.campaign_id AND s.type_id=? AND s.uid=? LEFT JOIN adv_campaigns_platforms as cp ON s.platform_id = cp.platform_id WHERE s.id IS NULL AND c.status=3 — это я не понял зачем AND cp.adv_campaign_id IS NULL and ( s.platform_id != ? —???? s.platform_id is null or cp.adv_campaign_id !=s.campaign_id )

Cate
22.11.2016
00:38:09
SELECT c.* FROM adv_campaigns as c LEFT JOIN statistics as s ON c.id=s.campaign_id AND s.type_id=? AND s.uid=? LEFT JOIN adv_campaigns_platforms as cp ON s.platform_id = cp.platform_id WHERE s.id IS NULL AND c.status=3 — это я не понял зачем AND cp.adv_campaign_id IS NULL and ( s.platform_id != ? —???? s.platform_id is null or cp.adv_campaign_id !=s.campaign_id )
— это я не понял зачем AND cp.adv_campaign_id IS NULL Так там в табличке не должно быть записи с таким adv_campaign_id, галочка стоит - значит отфильтровали кампанию.

Artur
22.11.2016
00:38:10
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;
а должо быть так SELECT c.*, cp.* 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 LEFT JOIN adv_campaigns_platforms as cp ON s.platform_id = cp.platform_id WHERE s.id IS NULL AND c.status=3 AND cp.adv_campaign_id IS NULL;

или так 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 WHERE s.id IS NULL AND c.status=3 AND cp.adv_campaign_id IS NULL AND s.type_id=3 AND s.uid='5' AND s.platform_id=4 ;

какой конкретно запрос не работает

ну ок...

Cate
22.11.2016
00:43:25
Ну скажем запрос то работает)

Cate
22.11.2016
00:43:25
ctrl=# SELECT c.* ctrl-# FROM adv_campaigns c ctrl-# LEFT JOIN statistics s ctrl-# ON c.id=s.campaign_id ctrl-# LEFT JOIN adv_campaigns_platforms as cp ctrl-# ON s.platform_id = cp.platform_id ctrl-# WHERE s.id IS NULL ctrl-# AND c.status=3 ctrl-# AND cp.adv_campaign_id IS NULL ctrl-# AND s.type_id=3 ctrl-# AND s.uid='5' ctrl-# AND s.platform_id=4; id | title | short_description | description | age | price1 | price2 | created_at | updated_at | hour_limit | day_limit | week_limit | month_limit | general_limit | date_start | date_end | live_traffic | time_interval | image_data | brief | url | city | country | status | uuid | secret | original_offer_id | deleted_at | pixel_toggle | user_id | region | campaign_type | platform_type | integration_stat_url | age_unknown | gender | provider_id | social | web2mobile | datatype | redirect_url | vk_url | task_types | mobile_type | mobile —--+-------+-------------------+-------------+-----+--------+--------+------------+------------+------------+-----------+------------+-------------+---------------+------------+----------+--------------+---------------+------------+-------+-----+------+---------+--------+------+--------+-------------------+------------+--------------+---------+--------+---------------+---------------+----------------------+-------------+--------+-------------+--------+------------+----------+--------------+--------+------------+-------------+------— (0 rows)

Artur
22.11.2016
00:45:19
а должно быть не 0?

Cate
22.11.2016
00:45:23
Только в моем случае он выводит 4 кампании, в твоем 0, в идеале должен штук 50 показывать.

Alexander
22.11.2016
00:45:52
он скрытный)

Artur
22.11.2016
00:45:54
так при чём тут "в моём случае". я ж говорю я сделал условия что ты просила )

Cate
22.11.2016
00:46:20
щас проаапдэйчу..

Artur
22.11.2016
00:46:49
ctrl=# SELECT c.* ctrl-# FROM adv_campaigns c ctrl-# LEFT JOIN statistics s ctrl-# ON c.id=s.campaign_id ctrl-# LEFT JOIN adv_campaigns_platforms as cp ctrl-# ON s.platform_id = cp.platform_id ctrl-# WHERE s.id IS NULL ctrl-# AND c.status=3 ctrl-# AND cp.adv_campaign_id IS NULL ctrl-# AND s.type_id=3 ctrl-# AND s.uid='5' ctrl-# AND s.platform_id=4; id | title | short_description | description | age | price1 | price2 | created_at | updated_at | hour_limit | day_limit | week_limit | month_limit | general_limit | date_start | date_end | live_traffic | time_interval | image_data | brief | url | city | country | status | uuid | secret | original_offer_id | deleted_at | pixel_toggle | user_id | region | campaign_type | platform_type | integration_stat_url | age_unknown | gender | provider_id | social | web2mobile | datatype | redirect_url | vk_url | task_types | mobile_type | mobile —--+-------+-------------------+-------------+-----+--------+--------+------------+------------+------------+-----------+------------+-------------+---------------+------------+----------+--------------+---------------+------------+-------+-----+------+---------+--------+------+--------+-------------------+------------+--------------+---------+--------+---------------+---------------+----------------------+-------------+--------+-------------+--------+------------+----------+--------------+--------+------------+-------------+------— (0 rows)
я не менял твой запрос здесь кстати :)))

Google
Artur
22.11.2016
00:48:54
ctrl=# SELECT c.* ctrl-# FROM adv_campaigns c ctrl-# LEFT JOIN statistics s ctrl-# ON c.id=s.campaign_id ctrl-# LEFT JOIN adv_campaigns_platforms as cp ctrl-# ON s.platform_id = cp.platform_id ctrl-# WHERE s.id IS NULL ctrl-# AND c.status=3 ctrl-# AND cp.adv_campaign_id IS NULL ctrl-# AND s.type_id=3 ctrl-# AND s.uid='5' ctrl-# AND s.platform_id=4; id | title | short_description | description | age | price1 | price2 | created_at | updated_at | hour_limit | day_limit | week_limit | month_limit | general_limit | date_start | date_end | live_traffic | time_interval | image_data | brief | url | city | country | status | uuid | secret | original_offer_id | deleted_at | pixel_toggle | user_id | region | campaign_type | platform_type | integration_stat_url | age_unknown | gender | provider_id | social | web2mobile | datatype | redirect_url | vk_url | task_types | mobile_type | mobile —--+-------+-------------------+-------------+-----+--------+--------+------------+------------+------------+-----------+------------+-------------+---------------+------------+----------+--------------+---------------+------------+-------+-----+------+---------+--------+------+--------+-------------------+------------+--------------+---------+--------+---------------+---------------+----------------------+-------------+--------+-------------+--------+------------+----------+--------------+--------+------------+-------------+------— (0 rows)
adv_campaign_id | platform_id —---------------+------------- 186 | 4 187 | 6 188 | 6 188 | 5 188 | 7 188 | 4 | 4 | 5 почему у тебя такое вообще возможно о_0

adv_campaign_id = null

это ж дичь http://pastebin.com/guD5Vtdq

Cate
22.11.2016
00:49:26
ctrl=# \d adv_campaigns_platforms; Table "public.adv_campaigns_platforms" Column | Type | Modifiers —---------------+---------+---------— adv_campaign_id | integer | platform_id | integer | Indexes: "index_campaigns_platforms" UNIQUE, btree (adv_campaign_id, platform_id)

Это мне программист сделал.

Artur
22.11.2016
00:49:56
напрашивается not null на оба поля

Cate
22.11.2016
00:50:33
забавно. я проапдэйтила табличку. в ней нет ни одной кампании с такими условиями как в запросе.

Artur
22.11.2016
00:50:46
или это флаг "пустых" компаний?

Admin
ERROR: S client not available

Cate
22.11.2016
00:51:13
adv_campaign_id | platform_id —---------------+------------- 187 | 6 188 | 6 188 | 5 188 | 7 | 5 | 5 | 6 | 5 | 6 10 | 5 10 | 6 | 1000 | 1000 | 1000 | 1000 | 1000 | 1000 | 1000 | 1000 | 1000 | 1000 | 1000 | 1000 | 1000

Artur
22.11.2016
00:51:20
один фиг у тебя они не уникальные "index_campaigns_platforms" UNIQUE, btree (adv_campaign_id, platform_id) | 4 | 4 из-за null

Cate
22.11.2016
00:51:30
Я знаю почему так.

Artur
22.11.2016
00:51:44
я не вижу причин чтобы было так

Cate
22.11.2016
00:51:56
ну он так вот сделал.

Artur
22.11.2016
00:52:26
а если бы хирург тебе "ну так сделал"?

Alexander
22.11.2016
00:53:02
по-моему, там все хороши)

Artur
22.11.2016
00:53:20
ctrl=# SELECT c.* ctrl-# FROM adv_campaigns c ctrl-# LEFT JOIN statistics s ctrl-# ON c.id=s.campaign_id ctrl-# LEFT JOIN adv_campaigns_platforms as cp ctrl-# ON s.platform_id = cp.platform_id ctrl-# WHERE s.id IS NULL ctrl-# AND c.status=3 ctrl-# AND cp.adv_campaign_id IS NULL ctrl-# AND s.type_id=3 ctrl-# AND s.uid='5' ctrl-# AND s.platform_id=4; id | title | short_description | description | age | price1 | price2 | created_at | updated_at | hour_limit | day_limit | week_limit | month_limit | general_limit | date_start | date_end | live_traffic | time_interval | image_data | brief | url | city | country | status | uuid | secret | original_offer_id | deleted_at | pixel_toggle | user_id | region | campaign_type | platform_type | integration_stat_url | age_unknown | gender | provider_id | social | web2mobile | datatype | redirect_url | vk_url | task_types | mobile_type | mobile —--+-------+-------------------+-------------+-----+--------+--------+------------+------------+------------+-----------+------------+-------------+---------------+------------+----------+--------------+---------------+------------+-------+-----+------+---------+--------+------+--------+-------------------+------------+--------------+---------+--------+---------------+---------------+----------------------+-------------+--------+-------------+--------+------------+----------+--------------+--------+------------+-------------+------— (0 rows)
что вообще этот флаг даёт AND cp.adv_campaign_id IS NULL по идее должно хотеться AND cp.adv_campaign_id IS NOT NULL :)

а здесь без логики связей полей ничего не сделать

Cate
22.11.2016
00:54:03
ну у нас наоборот. запись есть - флажок стоит, нет - не стоит.

если флажок снять cp.adv_campaign_id становится NULL

Google
Artur
22.11.2016
00:54:43
ну у нас наоборот. запись есть - флажок стоит, нет - не стоит.
не запись есть.. а должно быть: есть хотябы одна запись без adv_campaign_id. а это так себе

Alexander
22.11.2016
00:54:56
я могу понять программиста, который сделал всё плохо потому что ему не поставили чёткое ТЗ, последние 2,5 часа тут что-то происходит и только 3 человека понимают, что именно)

Cate
22.11.2016
00:55:20
Флажочки вот)

Alexander
22.11.2016
00:55:30
дай структуру таблиц

Artur
22.11.2016
00:55:32
я тебе не про флажки

а про ошибку в логике проектирования вне зависимости от поставленной задачи

Alexander
22.11.2016
00:55:47
не данные, а вот CREATE TABLE эти

Cate
22.11.2016
00:55:56
после таких такой шлак в бд

Artur
22.11.2016
00:56:24
шлак он не в пхпмайадминах :)

Cate
22.11.2016
00:56:38
не данные, а вот CREATE TABLE эти
для это есть структура.

Table "public.adv_campaigns_platforms" Column | Type | Modifiers —---------------+---------+---------— adv_campaign_id | integer | platform_id | integer | Indexes: "index_campaigns_platforms" UNIQUE, btree (adv_campaign_id, platform_id)

Вот она

Artur
22.11.2016
00:58:13
нормально плати, нормально будет (с) :)

Alexander
22.11.2016
00:58:28
ну, вообще сначала рисуют типа такого https://habrastorage.org/files/de3/ed5/b3e/de3ed5b3e150493c8d4d4e3fb82bf8ad.png

Cate
22.11.2016
00:59:10
нормально плати, нормально будет (с) :)
Слуш, ну 100-200к руби программеру нормально вроде.

год назад правд

Alexander
22.11.2016
00:59:48
и тут по линиям и концам понятно, NULL / NOT NULL, 1:M, 1:1, M:N

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