@mysql_ru

Страница 62 из 142
Ринат
28.08.2017
13:51:39
вот на вход идет айди из таблички artilces, в нём может быть заоплнено поле bound в котором через запятую могут быть айдишники из той же таблицы

и по сути вместо ai.article_id = 1234 должно получится ai.article_id IN(1234,345)

Fike
28.08.2017
13:53:20
регэкспом

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

Google
Ринат
28.08.2017
13:54:04
))

но это будет что то типа ai.article_id IN (select ..... FROM articles WHERE id = 1234)

Fike
28.08.2017
13:56:20
а, тебе в обратную сторону

find_in_set действительно выглядит самым простым решением

Ринат
28.08.2017
13:58:23
ну мои действия программные были бы такие-есть айди, я делаю выборку из поля bound, раскладываю в строку которую пихаю в след запрос в IN

Lucky
28.08.2017
13:58:24
А можно ли как-то передать ссылку на json в хранимую процедуру, чтобы потом в процедуре прочитать элементы из json и положить их в таблицу? Сейчас передаю строкой и упираюсь в лимит строки по LONGTEXT.

Ринат
28.08.2017
13:58:38
Lucky
28.08.2017
13:58:39
(да, это снова я. каюсь, что был идиотом)

lost
28.08.2017
14:01:50
ну мои действия программные были бы такие-есть айди, я делаю выборку из поля bound, раскладываю в строку которую пихаю в след запрос в IN
вот это самый лучший способ, разбить на 2 запроса, потому что find_in_set будет не очень дешево использовать

Ринат
28.08.2017
14:02:29
я пока не понял как он работает

Lucky
28.08.2017
14:04:03
хороший вопрос. Я могу полностью импортировать данные из файла json через workbench, но через параметр хранимой процедуры они не влезают т.к. текстовая строка получается слишком длинной.

Google
Ринат
28.08.2017
14:04:35
что то find_in_set вообще не понятно что делает

Lucky
28.08.2017
14:04:39
Понятно, что передавать большой json текстом странно, но другого варианта пока нет

Fike
28.08.2017
14:07:11
что то find_in_set вообще не понятно что делает
ищет внутри разделенной запятыми строки, вот здесь самый очевидный пример применения https://www.gyrocode.com/articles/how-to-split-and-search-in-comma-separated-values-in-mysql/

Ринат
28.08.2017
14:13:53
так вот так проще походу IN (SELECT CONCAT(1234, bound) FROM articles WHERE id = 1234)

хотя, он не вывел что я хотел, всё равно только по 1234

может он как то экранирует результат, не пойму. Типа не (1234, 5678) а ('1234, 5678')

Fike
28.08.2017
14:17:08
он вряд ли IN'ом самостоятельно разбивает всё на нужные значения

Ринат
28.08.2017
14:17:19
да похоже

Fike
28.08.2017
14:17:35
да и селект ему возвращает ему множество строк (из одной), а не одну строку

Ринат
28.08.2017
14:19:04
вернёт то он одну строку всё норм

но потом IN как строка посдатвляется

и он там уже до первой запятой первый айди берёт и всё

Fike
28.08.2017
14:19:47
Я про то что ему возвращается, условно говоря, ['123443,34,35']

и IN все равно работает не на уровне этой строки, а на уровне множества строк

Ринат
28.08.2017
14:20:28
попробовал передать в кавычках руками такой список id

он только по первой шпарит

lost
28.08.2017
14:24:10
твой конкат вернет ему 1 литерал

в IN

если бы такая хрень работала - никто бы не писал динамику в sql

Ринат
28.08.2017
14:24:39
а что за динамика

Google
Lucky
28.08.2017
14:27:38
Да в принципе можно

lost
28.08.2017
14:27:55
нууу, тогда можешь кусками заимпортить куда-то и собрать потом

Dmitriy
28.08.2017
14:28:24
Памяти приготовь сразу)

lost
28.08.2017
14:28:34
ну а шо поделать...

а версия какая?

Dmitriy
28.08.2017
14:28:53
Все уйдет на оверхед

а версия какая?
Сейчас редко где ниже 5.5 встречается

lost
28.08.2017
14:29:39
прост в 5.7 есть натвиный тип json

я не думаю что там ограничение есть на длину, ибо он в бинарном представлении

Lucky
28.08.2017
14:29:54
5.7 и есть

А как импортировать json в бинарном виде в хранимку?

lost
28.08.2017
14:30:31
нууу, а в процедуре входной параметр json выстави тогда

попробуй просто как строку передать в тип json, что-то мне подсказывает, что мускуль это схавает

Lucky
28.08.2017
14:31:46
Так я сейчас как строку и передаю

Lucky
28.08.2017
16:40:48
Есть несколько полей в таблице, делаю по ним SELECT JSON_OBJECT('link', link, 'Name', Name, 'Value', Value) FROM temp_DC_Links; и получаю на каждую строку по json, а как мне их скомпановать в JSON_ARRAY?

lost
28.08.2017
16:42:01
с помощью group concat

Google
Lucky
28.08.2017
16:42:37
Я пробовал, но тогда из хранимки возвращается далеко не всё

lost
28.08.2017
16:43:10
тебе же на выходе нужно json массив получить верно?

Lucky
28.08.2017
16:43:31
да

lost
28.08.2017
16:43:57
с помощью group concat
его в квадратные скобки оборачиваешь и все

костыли конечно

но агрегацию json объектов в мускуль подвезли только в 8 версии

Lucky
28.08.2017
16:44:28
Так я сначала костылём и сделал, но черег груп конкат селект не возвращает больше 1к знаков у меня

lost
28.08.2017
16:44:42
ааа

детская болезнь

лечится увеличением group_concat_max_len

Lucky
28.08.2017
16:45:04
Докто, я хочу жить без костылей

lost
28.08.2017
16:45:31
и все у тебя влезет

и ты сможешь натянуть сову на глобус

Lucky
28.08.2017
16:46:13
А на сколько лучше увеличить?

И не аукнется ли это потом?

lost
28.08.2017
16:46:43
зависит от того какой глобус и какая сова

Lucky
28.08.2017
16:46:50
Потому, что я согласен обновиться на восьмёрку, если там это лучше устроено.

lost
28.08.2017
16:47:49
лучше но я бы не советовал

Lucky
28.08.2017
16:47:55
Спасибо за варианты, буду сидеть думать, чтобы меня потом вместо совы не натянули

lost
28.08.2017
16:49:14
аминь

Google
Alexey
28.08.2017
16:50:50
Спасибо за варианты, буду сидеть думать, чтобы меня потом вместо совы не натянули
здесь показывают ещё один хак без group_concat(): http://thenoyes.com/littlenoise/?p=474

Lucky
28.08.2017
16:51:55
Оп, отдельное спасибо.

lost
28.08.2017
16:55:20
сессионные переменные это еще жощще

Maxim
29.08.2017
06:37:40
А сколько может стоить написание простого SQL запроса?

Ринат
29.08.2017
06:38:07
в смысле?

хочешь кому то написать запрос за деньги?)

Maxim
29.08.2017
06:38:23
да

5 простых запросов

300 за запрос норм?

Yaroslav
29.08.2017
06:42:46
А сколько может стоить написание простого SQL запроса?
зависит от запроса, сроков, качества

в среднем 0

Maxim
29.08.2017
06:43:24
бесплатно

Lucky
29.08.2017
09:20:27
Возвращаясь ко вчерашнему вопросу про то как собрать json массив из json объектов, я решил пока через такой костыль WHILE i < @size DO SET @array = (SELECT JSON_ARRAY_APPEND

lost
29.08.2017
09:35:59
можно в селекте с сессионными переменными сделать тоже json_array_apend

эффект будет такой же

Lucky
29.08.2017
10:28:40
Да, я просто сделал в меру своей криворожский через оффсет.

А ничего размером больше чем LONGTEXT в хранимку не передать?

lost
29.08.2017
12:04:53
по-моему нет

Danil
30.08.2017
03:15:33
Доброго всем. Не много полу оффтопа. Кто каким инструментарием пользуеться для MySQL Мой набор: HeidiSQL - закинуть запрос, посмотреть как работет, не много по отлаживать при необходимости. (оперативный инструмент, ни чего лишнего) MySQL Workbench - Обслуживание/проэктирование БД, профилирование вдумчивое и т.д. - (тяжелая артилерия) Monyog - мониторинг БД, запросов, что где можно попрваить.

У всех зоопарк под разные задачи? или я отстал от жизни - и давно все пользуються чем то божественным что может все? (не много достает - между ними бегать.... )

Страница 62 из 142