powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / вопросик по mysql
32 сообщений из 32, показаны все 2 страниц
вопросик по mysql
    #38318786
t3n3t
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
суть такова:

есть таблица innoDB в mysql, с, к примеру, таким содержанием:

столбцы: ид_товара; артикул_товара; цена_товара

ид_товара - auto_increment, int, первичный ключ.

артикул_товара - varchar, т.к. используются не только цифры.

цена_товара - decimal.

~3500 строк с заполненными значениями.

вопрос в следующем: реально ли (и если да - то как) путем импорта в phpmyadmin .csv-файла сменить значения в столбце цена_товара, соответствующие заданным в файле значениям артикул_товара, независимо от столбца ид_товара.

предполагаю, что это что-то вроде хитрого запроса с выборкой значений артикул_товара из файла, сравнения оных со значениями из таблицы и присваивания соответствующего значения цена_товара из файла полю цена_товара в таблице.

тупо импорт файла с двумя столбцами значений без ид_товара ничего не дает.

понимаю, объяснил крайне путанно, но в sql я - нуб, увы
...
Рейтинг: 0 / 0
вопросик по mysql
    #38318954
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Импорт CSV - это одна операция.
Обновление данных в таблице - это другая операция.
Каждая из этих операций делается совсем несложно - даже, я полагаю, в phpmyadmin.
А вот в один запрос этого лучше не делать.
...
Рейтинг: 0 / 0
вопросик по mysql
    #38319993
t3n3t
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AkinaИмпорт CSV - это одна операция.
Обновление данных в таблице - это другая операция.
Каждая из этих операций делается совсем несложно - даже, я полагаю, в phpmyadmin.
А вот в один запрос этого лучше не делать.

почему?

я вот сейчас в этом направлении копаю -. оно того стоит?
...
Рейтинг: 0 / 0
вопросик по mysql
    #38319994
t3n3t
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
вопросик по mysql
    #38320015
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По ссылке написано ровно то, о чём я сказал.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
вопросик по mysql
    #38964270
mysql_noob
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите, есть ли возможность узнать тип данных возвращаемого поля в запросе?
Читаю доку, не могу найти.

Версия 5.5.
...
Рейтинг: 0 / 0
вопросик по mysql
    #38964279
Фотография -k2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mysql_noob,

desc table?
...
Рейтинг: 0 / 0
вопросик по mysql
    #38964289
mysql_noob
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
-k2-,

Это не поле таблицы, а результат вычисления.

Задача: получить кол-во секунд между двумя datetime.

Вычитаю - получаю не понятно что. Стало интересно что же получаю.

Код: sql
1.
2.
3.
select STR_TO_DATE('18.05.2015 23:59:59', '%d.%m.%Y %H:%i:%s')
       -
       STR_TO_DATE('16.05.2015 23:59:57', '%d.%m.%Y %H:%i:%s')


результат 0.
...
Рейтинг: 0 / 0
вопросик по mysql
    #38964329
Фотография -k2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mysql_noob,

select STR_TO_DATE('18.05.2015 23:59:59', '%d.%m.%Y %H:%i:%s')-STR_TO_DATE('16.05.2015 23:59:57', '%d.%m.%Y %H:%i:%s')
2000002
...
Рейтинг: 0 / 0
вопросик по mysql
    #38964341
Фотография -k2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mysql_noob,

select TIME_TO_SEC(TIMEDIFF(STR_TO_DATE('18.05.2015 23:59:59', '%d.%m.%Y %H:%i:%s'),STR_TO_DATE('16.05.2015 23:59:57', '%d.%m.%Y %H:%i:%s')))
в доке много полезных функций для работы с датой/времени
https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html
...
Рейтинг: 0 / 0
вопросик по mysql
    #38964363
mysql_noob
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
-k2-,

Спасибо, помогло! Несколько раз перечитывал этот список, но видимо плохо.

А функции определения типа данных результата выражения в mysql нет?
...
Рейтинг: 0 / 0
вопросик по mysql
    #38964381
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot mysql_noobА функции определения типа данных результата выражения в mysql нет?[/quot]Текст выражения всегда однозначно определяет тип результата.
...
Рейтинг: 0 / 0
вопросик по mysql
    #38964396
mysql_noob
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina[quot mysql_noobА функции определения типа данных результата выражения в mysql нет?Текст выражения всегда однозначно определяет тип результата.[/quot]
Да, так и есть. Т.е. такой функции в mysql нет ?
...
Рейтинг: 0 / 0
вопросик по mysql
    #38964397
Фотография -k2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mysql_noob,

скорей всего ты хочешь чего-то другого
чем полнее и точнее опишешь задачу, тем полезнее будет ответ
...
Рейтинг: 0 / 0
вопросик по mysql
    #38964442
mysql_noob
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
-k2-,

С задачей вы уже помогли разобраться, спасибо) Просто в силу неопытности хочется понимать, что получаю после манипуляцией над тем или иным типом данных. Доку конечно прочитаю, но сразу в ней тяжело сориентироваться.
...
Рейтинг: 0 / 0
вопросик по mysql
    #38964455
Фотография -k2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mysql_noob,

как правильно указал предыдущий оратор, зависит от выражения,
например в результате арифметических операций - получите числовое значение
про даты - ну вы уже поняли
внимательно прочитайте про неявное приведение типов в выражениях (все ссылки тут пройти нужно :))
https://dev.mysql.com/doc/refman/5.5/en/type-conversion.html
где не уверены в типе входных параметров - приводите явно
https://dev.mysql.com/doc/refman/5.5/en/cast-functions.html
...
Рейтинг: 0 / 0
вопросик по mysql
    #38964482
mysql_noob
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
-k2-,

Благодарю) Буду изучать)
...
Рейтинг: 0 / 0
вопросик по mysql
    #38966387
mysql_noob
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Столкнулся с другой проблемой. Не понимаю в чём причина

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
select   date(t.time)
               ,t.ts
          ,SUM(t.velocity)
          FROM (
                  select t.*
                        ,t.time
                        ,t.velocity
                        from table t
                      where 1 = 1
                        and t.time between STR_TO_DATE('13.05.2015 00:00:00', '%d.%m.%Y %H:%i:%s')
                                       and STR_TO_DATE('18.05.2015 23:59:59', '%d.%m.%Y %H:%i:%s')
               ) t
         where 1 = 1
         group by date(t.point_time)
                 ,t.ts


Так работает.


Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
select date(t.time)
      ,t.ts
      ,SUM(t.velocity)
  FROM (
    select t.*
      from (
        select t.*
              ,t.time
              ,t.velocity
              from table t
            where 1 = 1
              and t.time between STR_TO_DATE('13.05.2015 00:00:00', '%d.%m.%Y %H:%i:%s')
                             and STR_TO_DATE('18.05.2015 23:59:59', '%d.%m.%Y %H:%i:%s')
           ) t
       ) t
 where 1 = 1
 group by date(t.point_time)
         ,t.ts


Вот так перестает.
Incorrect key file for table '/tmp/#sql_2a68_1.MYI'; try to repair

Таблица InnoDB, 130 мил. записией, первичный ключ (time, ts), индексов нет. Партиций тоже нет.

Check table EXTENDED показывает status ok.

Сам запрос
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
select  date(t.time)
       ,t.ts
       ,sum( case when n_sec_dif > 60 * 5
                  then n_sec_dif * 60 /
                  when t.n_velocity_prev = 0 and t.n_velocity = 0
                  then n_sec_dif * 60 
               end
           )
         FROM (
           SELECT t.*
                 ,TIME_TO_SEC(TIMEDIFF( t.t_time, t.t_time_prev )) AS n_sec_dif
             FROM (  select gp.*
                            ,(select max(gp2.time)
                                from tabl          gp2
                               where 1 = 1
                                 and gp2.time between STR_TO_DATE('13.05.2015 00:00:00', '%d.%m.%Y %H:%i:%s')
                                                        and STR_TO_DATE('18.05.2015 23:59:59', '%d.%m.%Y %H:%i:%s')
                                 and gp2.ts = gp.ts
                                 and gp2.time < gp.time                     
                                                        
                             )                                                     as t_time_prev
                           ,gp.time                                         as t_time
                           ,(select max(gp2.velocity)
                               from tabl          gp2
                              where 1 = 1
                                and gp2.time between STR_TO_DATE('13.05.2015 00:00:00', '%d.%m.%Y %H:%i:%s')
                                                       and STR_TO_DATE('18.05.2015 23:59:59', '%d.%m.%Y %H:%i:%s')
                                and gp2.ts = gp.ts
                                and gp2.time < gp.time                     
                                                       
                            )                                                     as n_velocity_prev
                           ,gp.velocity                                           as n_velocity  
                       from      tabl       gp
                     where 1 = 1
                       and gp.time between STR_TO_DATE('13.05.2015 00:00:00', '%d.%m.%Y %H:%i:%s')
                                             and STR_TO_DATE('18.05.2015 23:59:59', '%d.%m.%Y %H:%i:%s')
                  ) t
            WHERE 1 = 1
               ) t
         where 1 = 1
         group by date(t.time)
                 ,t.ts



Версия 5.1.
...
Рейтинг: 0 / 0
вопросик по mysql
    #38966401
mysql_noob
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В 3 запрсое убрал вложенность, а результат функцию вынес в case. Всё равно ошибка
Incorrect key file for table

Т.е. дело не в уровнях вложенности запросов. Хотя не понятно, почему первый работает, а второй запрос тогда нет.
...
Рейтинг: 0 / 0
вопросик по mysql
    #38966406
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну тебе говорят же, что таблица имеет повреждения! а ты её продолжаешь в хвост и гриву...
Выполни лечение, и всё наладится.
...
Рейтинг: 0 / 0
вопросик по mysql
    #38966418
mysql_noob
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AkinaНу тебе говорят же, что таблица имеет повреждения! а ты её продолжаешь в хвост и гриву...
Выполни лечение, и всё наладится.
Как узнать что таблица действительно повреждена? Сами данные из неё селектятся нормально. По отдельности все поля тоже агрируются нормально.

В доке это ошибка только в контексте MyISAM таблицы. К InnoDB всё написанное в той же степени относится?
...
Рейтинг: 0 / 0
вопросик по mysql
    #38966420
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mysql_noob,

А места на диске достаточно?
Нужно, как минимум, на размер таблицы.
...
Рейтинг: 0 / 0
вопросик по mysql
    #38966436
mysql_noob
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft,

Проверил, места много.
...
Рейтинг: 0 / 0
вопросик по mysql
    #38966440
mysql_noob
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoftmysql_noob,

А места на диске достаточно?
Нужно, как минимум, на размер таблицы.
Сори, невнимательно прочел. Сейчас проверю, чтобы было на размер таблицы.
...
Рейтинг: 0 / 0
вопросик по mysql
    #38966443
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У тебя ДВА подзапроса, вложенные один в другой, имеют один и тот же алиас `t`.
...
Рейтинг: 0 / 0
вопросик по mysql
    #38966469
mysql_noob
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Места много (больше 50%).

Алиас вложенных запросов поменял, но не помогло.
...
Рейтинг: 0 / 0
вопросик по mysql
    #38966501
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mysql_noob , значит, начинайте отладку.
Оформляйте подзапросы как вьювы и смотрите, в какой точке возникает проблема.
...
Рейтинг: 0 / 0
вопросик по mysql
    #38966507
mysql_noob
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina mysql_noob , значит, начинайте отладку.
Оформляйте подзапросы как вьювы и смотрите, в какой точке возникает проблема.
Т.е. вариант с повреждением таблицы можно исключить?
...
Рейтинг: 0 / 0
вопросик по mysql
    #38966513
mysql_noob
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina mysql_noob , значит, начинайте отладку.
Оформляйте подзапросы как вьювы и смотрите, в какой точке возникает проблема.
Второй запрос ( в сравнение с первым) даже без подзапросов не рабочий (включая вариант с измененными алиасами).
Даже не представляю в какую сторону копать.
...
Рейтинг: 0 / 0
вопросик по mysql
    #38966564
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дробите запрос, выявляйте проблемную таблицу. Упрощайте запрос, выявляйте проблемное выражение, поле или набор полей. А не представлять, куда копать, бессмысленно.
...
Рейтинг: 0 / 0
вопросик по mysql
    #38966589
mysql_noob
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Разобрались, дело всё таки было было в нехватки места для темповых результатов.

Всем спасибо за советы.
...
Рейтинг: 0 / 0
вопросик по mysql
    #38966590
mysql_noob
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
дело всё таки было было в нехватки места для темповой таблицы.
...
Рейтинг: 0 / 0
32 сообщений из 32, показаны все 2 страниц
Форумы / MySQL [игнор отключен] [закрыт для гостей] / вопросик по mysql
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]