
Aleksey
27.10.2018
21:17:25
для TIMESTAMP тоже

Сергей
27.10.2018
21:22:34
Не приходилось с этим сталкиваться

Katulos
27.10.2018
21:32:42
В Yii есть что нибудь родное, чтобы сделать пару сотен update where одним моментом без циклов?
where в пачке запросов естественно разное

Google

Andrey
27.10.2018
22:38:50

Artyom
27.10.2018
22:42:20

Andrey
27.10.2018
22:42:50
возможно во внешнем запросе нужно будет повторить andWhere()

Artyom
27.10.2018
22:44:33
оо у меня сейчас вообще дичь будет, еще субквери совать нужно, не знаю чем думал, спать хотел) Как всегда короче)

Andrey
27.10.2018
22:46:24
связь в любом случае вторым запросом получается

Artyom
27.10.2018
22:46:43
Где-то кто-то рассказывал про какой-то dataloader который решает такие проблемы, все никак не посмотрю что это такое...

Andrey
27.10.2018
22:46:48
только так получится сразу для всех моделей

Artyom
27.10.2018
22:47:46

Andrey
27.10.2018
22:51:16

Google

Artyom
27.10.2018
22:52:51
вот хочу все этого товарища посмотреть, но времени не нахожу. =(

Andrey
27.10.2018
22:53:36
выдели время - оно того стоит

Yet Another Stats
27.10.2018
22:54:12
Карма @andku83 стала 11

Andrey
27.10.2018
22:54:13
возможно даже не раз прийдется посмотреть, но один обязательно нужно

Artyom
27.10.2018
22:57:01
кстати то был не сабквери...
я не про это, в место where получить ids по условию where, а потом where transaction_id => (subquery->createCommand->rawSql). Или как-то так, надо как-то сесть поправить, а у меня мега косяк получается, но что-то лениво пока...
кстати то был не сабквери...
потому что по логике тогда, оно либо будет группировать результат в php либо кучу дублей покажет, у меня там один ко многим.
короче, мозг уже давно в отпуске, загорает где-то на солнышке.

Andrey
27.10.2018
22:59:38
andWhere(['transaction_id' => SettledTransactions::find()->distinct()->andWhere()])
это пример subquery без createCommand
смысл в том что мы не выполняем запрос при помощи ->all() или ->one()

Artyom
27.10.2018
23:01:12
что-то, как-то, когда-то мне поругалось на disctinct и я про него напрочь забыл. Почему-то думал что mysql считает его depricated.

Andrey
27.10.2018
23:01:39
нее

Artyom
27.10.2018
23:02:06

Katulos
27.10.2018
23:03:16

Andrey
27.10.2018
23:03:17
если мы закончим all() то получим 2 запроса без сабквери

Artyom
27.10.2018
23:03:34
не уверен что disctinct хорошая идея, хотя это проще...

Andrey
27.10.2018
23:04:17

Google

Artyom
27.10.2018
23:04:19
что-то не, не то.
one от all отличается только тем, что последний берет из выборки тупо первую запись.

Andrey
27.10.2018
23:04:54

Artyom
27.10.2018
23:04:56
Я так думал.

Andrey
27.10.2018
23:05:10
а если их не писать, то будет один с сабквери

Katulos
27.10.2018
23:06:09

Andrey
27.10.2018
23:06:40

Katulos
27.10.2018
23:07:15
на чистом mysql покажи пример
UPDATE a
SET fruit = (CASE id WHEN 1 THEN 'apple'
WHEN 2 THEN 'orange'
WHEN 3 THEN 'peach'
END)
WHERE id IN(1,2 ,3);
ну или INSERT into `table` (id, fruit)
VALUES (1, 'apple'), (2, 'orange'), (3, 'peach')
ON DUPLICATE KEY UPDATE fruit = VALUES(fruit);
Хотелось бы закостылить это без магии DAO
Ибо хз какое там в итоге субд будет

Andrey
27.10.2018
23:09:16
через createComand пряио в sql и писать

Katulos
27.10.2018
23:09:31

Andrey
27.10.2018
23:09:53
из коробки вроде upsert должны были сделать

Katulos
27.10.2018
23:11:09
это опять таки оно, DAO

Artyom
27.10.2018
23:22:04

Andrey
27.10.2018
23:22:31
покажи

Artyom
27.10.2018
23:23:10
покажу, если чего пажет)

Google

Artyom
27.10.2018
23:25:46
не показывает, запускаю для теста в котроллере, долго-долго думает потом 502.
SELECT DISTINCT transactions.* FROM transactions LEFT JOIN settled_transactions ON transactions.transaction_id = settled_transactions.tracking_id WHERE (settled_transactions.settled_at >= UNIX_TIMESTAMP('2018-10-01')) AND (settled_transactions.settled_at < (UNIX_TIMESTAMP('2018-10-27') + 3600*24))
результат не вывожу.

Andrey
27.10.2018
23:26:43
а где тут сабквери?!

Artyom
27.10.2018
23:26:47
SELECT transaction_id FROM transactions WHERE transaction_id=(SELECT transaction_id FROM transactions LEFT JOIN settled_transactions ON transactions.transaction_id='settled_transactions.tracking_id' WHERE (settled_transactions.settled_at >= UNIX_TIMESTAMP('2018-10-01')) AND (settled_transactions.settled_at < (UNIX_TIMESTAMP('2018-10-27') + 3600*24)) GROUP BY transaction_id)
0.3 мс.
короче, буду считать и дальше disctinct какой-то непонятной depricated)

Andrey
27.10.2018
23:28:52
beetwen красивше смотрится

Asm
27.10.2018
23:29:13

Artyom
27.10.2018
23:29:28

Andrey
27.10.2018
23:30:39

Artyom
27.10.2018
23:30:50
просто выполняю запрос.

Andrey
27.10.2018
23:30:54
так это 2 совсем разных запроса

Asm
27.10.2018
23:30:58

Andrey
27.10.2018
23:31:36
в первом ты всю строку запрашиваешь, а во втором только id

Artyom
27.10.2018
23:31:44
ну могу в консоль попробовать, но лениво, я вообще поговорить люблю, а надо как-то исправить доделать еще и обертку для разделения на процессы сделать.

Andrey
27.10.2018
23:32:35
ты напиши свою структуру и что нужно получить, а то "лечим" по описанию внешности

Artyom
27.10.2018
23:33:11
хотя в первом, понятно, там еще и joinWith сейчас перепроверю.

Google

Artyom
27.10.2018
23:33:45

Andrey
27.10.2018
23:33:46
при че тут joinWith ты показываешь чистый скл

Artyom
27.10.2018
23:34:46
при том, что в результат еще собирается то что with, я об этом не подумал как-то.
поэтому 502

Andrey
27.10.2018
23:35:16
false вторым параметром

Artyom
27.10.2018
23:35:31
0.8 ms
все равно субквери быстрее был.
?

Andrey
27.10.2018
23:36:19
на малых данных вобще нельзя такое тестить, не показательно

Artyom
27.10.2018
23:36:30
соррян, туплю уже, надо спать как-то)

Andrey
27.10.2018
23:36:48
тем белее что сравниваешь ежа и носорога
да и кстати DISTINCT - частный случай GROUP BY

Artyom
27.10.2018
23:39:52
это понятно, вот я и использу group by , как говорил уже, distinct где-то когда-то люто ругнулось и где-то было написано что depricated.
)))

Andrey
27.10.2018
23:40:47
ну-ну..

Artyom
27.10.2018
23:40:54
Но, спасибо, может и сделаю на disctinct. Данные надо загрузить, пока только за этот месяц, а так таблицу почистил, чтобы было видно что тестить, тестов то нет =( еще их починить =(

Andrey
27.10.2018
23:41:50
ты понимаешь что ``SELECT transactions.*`` уже не равно ``SELECT transaction_id`` ???

Artyom
27.10.2018
23:42:15
ну вообще, да.