@mysql_ru

Страница 80 из 142
Alexey
03.10.2017
09:25:51
оптимизатор MySQL с картинками: http://www.unofficialmysqlguide.com/

Fike
03.10.2017
11:43:05
разархивировать

Rushan
04.10.2017
08:54:38
Всем добрый день! Подскажите плз, с чем может быть связана такая ошибка: у меня дамп базы ставится, у тестера нет, выдаёт ошибку на линии №..... Там вообще комментарий MYSQL одинаковой версии

Прям тупизм какой то

Google
lost
04.10.2017
08:59:54
ошибку в студию

Rushan
04.10.2017
09:27:09
просто "error at line 3333" и всё

Fike
04.10.2017
12:58:53
ошибка не в комментарии, ошибка перед комментарием

Yaroslav
04.10.2017
14:17:44
всем привет, вопрос, в процедуре, если мы передали переменную, можем ли ее юзать, для название таблицы?

ибо у меня не подставляет значение в from

Alexey
04.10.2017
14:24:06
просто так нельзя. это называется dynamic sql. можно через prepared statements: https://stackoverflow.com/questions/190776/how-to-have-dynamic-sql-in-mysql-stored-procedure

Yaroslav
04.10.2017
14:26:07
спасибо, знаю, что это, попробую

а можно через SHOW TABLES сделать?

lost
04.10.2017
16:17:58
ну сделаешь ты show tables

а передашь ты результат этого show tables куда?

в пыху?

Yaroslav
04.10.2017
16:18:48
нельзя никак поместить в переменную, или подзапрос?

Google
lost
04.10.2017
16:19:02
нет

проще динамику использовать, я думаю

Yaroslav
04.10.2017
16:19:50
ок, спасибо

Alexey
04.10.2017
16:22:13
нельзя никак поместить в переменную, или подзапрос?
поместить в переменную или подзапрос можно, если использовать =information_schema=. но использовать переменную в качестве имени таблицы во from всё равно придётся через динамический SQL

Yaroslav
04.10.2017
16:38:49
Жаль(

Спасибо, за ответы парни)

lost
04.10.2017
16:39:44
да напиши динамику

Yaroslav
04.10.2017
16:39:50
Уже

lost
04.10.2017
16:39:53
не ссы, Славик, сто раз так делал)

Yaroslav
04.10.2017
16:40:08
Просто думал, над вариантами

Konstantin
04.10.2017
17:16:59
Ребят привет, нужна помощь Есть таблица (структура в принципе не важна), в неё нужно добавить новую колонку, и затем отдельной операцией туда нужно через джоин этой таблицы и еще одной записать значение из приджойненой таблицы Я не врубаюсь каким образом это провернуть

lost
04.10.2017
17:21:20
Продакшн база или песочница?

Yaroslav
04.10.2017
17:21:41
Зачем джоин делать?

lost
04.10.2017
17:22:24
Ну а как ты сопоставишь данные в 2х таблицах

Тут до джоина ещё

Как до китая в присядку

Fike
04.10.2017
17:27:08
разобью интригу

update table set x = (select ...)

Yaroslav
04.10.2017
17:28:19
Одни коты(

Google
lost
04.10.2017
17:34:46
update table set x = (select ...)
Ну это если значение одинаковое

Fike
04.10.2017
17:35:05
where он там, в многоточии

lost
04.10.2017
17:36:28
Джоин будет быстрее

Если там конечно не таблица из 10 записей

Konstantin
04.10.2017
17:45:33
update table set x = (select ...)
update sometable set toUpdate = (select toUpdate from yetAnotherTable where sometable.joinColumn = yetAnotherTable.joinColumn); Круто, но внутренний селект возвращает много значений

Fike
04.10.2017
17:46:50
ну джойн тебе здесь никак не поможет

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

Антон
04.10.2017
20:17:08
REPLACE INTO school_weeks (week, day) SELECT CEIL( DATEDIFF( NOW() , '1970-01-04' ) / 7 ) AS week, seq AS day FROM seq_0_to_6

норм запрос?

lost
04.10.2017
20:19:26
Первое правило клуба

Не используй реплейс

Антон
04.10.2017
20:19:49
lost
04.10.2017
20:21:30
Побочные эффекты

Почитай

Антон
04.10.2017
20:22:51
мне надо создать если не существует

lost
04.10.2017
20:40:42
Для этого лучше использовать on duplicate key update

Magic
04.10.2017
22:47:06
Для этого лучше использовать on duplicate key update
вот не понятно, не первый человек юзает реплейс. но я лично нигде не видел чтоб советовали делать через него

откуда тогда реплейс берут

lost
04.10.2017
22:51:12
Из документации, откуда же ещё

Fike
04.10.2017
23:07:13
откуда тогда реплейс берут
ну логично что при необходимости замены ты будешь искать в гугле replace и производные

Google
Magic
04.10.2017
23:09:28
выдавало всегда on duplicate

Fike
04.10.2017
23:31:32
я гуглил так в свое время: insert if not exists
дык это не апсерт по функционалу-то

Yaroslav
05.10.2017
07:45:35
Доброе утро, есть вопрос. Есть большой запрос, который собирает куча инфы с разных таблиц и инсертит их в две других таблицы. Хотел сделать процедуру в которой циклом инсертяться не все строки, а пачками. Нужно сделать аналогично, тоже самое для другой таблицы. Для этого хотел изменить процедуру, чтобы переменной подхватывалась имя таблицы и выполнялась. Но переменные нельзя юзать для названий таблиц. Было предложено решение динамического sql, я его написал. Но потом потребовалось сделать запрос большим и я а##ел. Цикл + запрос большой = не сильно подходит динамический запрос. Вопрос заключаеться в том, что нужно помощь в возможных вариантах решения

тупо на php гнать пачками запросы в цикле? есть ли другие варианты?

Есть мнение, что у меня ебанутый алгоритм, но все же. Может, у кого есть мысли?

lost
05.10.2017
08:02:17
А что мешает сделать отдельную процедуру без динамического sql?

Yaroslav
05.10.2017
08:03:19
нужно 2 раза одну операцию сделать для двух таблиц

там большой запрос, дублировать не хотел

а это будет две процедуры

логика и так ебанутая, потом никто не разбереться

кроме меня

lost
05.10.2017
08:07:58
Ну можно и в одну процедуру объединить, запилить на вход какой-нибудь type, и при вызове будет выполняться нужный кусок в зависимости от него

Единственное да, дублирование кода

Yaroslav
05.10.2017
08:11:46
и если добавить сюда, что вставлять нужно в две таблицы, а не в одну. получаем 4 запроса в процедуре

кто-то точно ебанеться, когда дебажить будет

там еще много помимо этого шага

в общем, думаю сделать на php логику, через один запрос в цикле.

Антон
05.10.2017
09:48:50
Archer
05.10.2017
10:51:42
Ребят, я первый раз такое делаю, поэтому детский вопрос: есть лог чата, надо его писать в базу, если просто инсертить тест чата в какое-то поле, то можно же '); DROP DATABASE db; сделать. Как правильно и просто подобного избежать?

Google
Danil
05.10.2017
10:52:34
читай про sql by]trwbb

*инъекции

Archer
05.10.2017
10:53:21
т.е. одного простого решения нет?

Danil
05.10.2017
10:54:33
решение в инструменте, которым ты инсертишь

Danil
05.10.2017
10:54:34
т.е. одного простого решения нет?
Зависит от языка програмирования/фремворка. во многих есть штатные методы реализации. средствами самой MySQL -не защитишся.

Archer
05.10.2017
10:56:06
Зависит от языка програмирования/фремворка. во многих есть штатные методы реализации. средствами самой MySQL -не защитишся.
я использую pymysql для питона сейчас, спасибо, я посмотрю, есть ли в нём. На самом деле мне всё равно, какой модуль использовать, если в каком-то питонском это есть, скажите, плиз.

Danil
05.10.2017
10:59:03
наверное больший отклик будет тут : @ru_python @propython @ru_python_beginners @rudepython

Fike
05.10.2017
12:21:48
Мне надо удалить if exists
delete ... where. если существует - удалит, если не существует - ничего не удалит.

lost
05.10.2017
12:28:00
подумаешь, оверхед в операции и побочные эффекты, плюс фрагментация данных и индексов

может от так и задумывал

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