Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / вопросик по mysql / 25 сообщений из 32, страница 1 из 2
03.07.2013, 14:30:13
    #38318786
t3n3t
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопросик по mysql
суть такова:

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

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

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

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

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

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

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

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

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

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

почему?

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

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

desc table?
...
Рейтинг: 0 / 0
20.05.2015, 15:36:40
    #38964289
mysql_noob
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопросик по mysql
-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
20.05.2015, 15:53:10
    #38964329
-k2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопросик по mysql
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
20.05.2015, 15:58:37
    #38964341
-k2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопросик по mysql
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
20.05.2015, 16:08:39
    #38964363
mysql_noob
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопросик по mysql
-k2-,

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

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

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

С задачей вы уже помогли разобраться, спасибо) Просто в силу неопытности хочется понимать, что получаю после манипуляцией над тем или иным типом данных. Доку конечно прочитаю, но сразу в ней тяжело сориентироваться.
...
Рейтинг: 0 / 0
20.05.2015, 17:04:29
    #38964455
-k2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопросик по mysql
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
20.05.2015, 17:27:12
    #38964482
mysql_noob
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопросик по mysql
-k2-,

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

Код: 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
22.05.2015, 14:34:17
    #38966401
mysql_noob
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопросик по mysql
В 3 запрсое убрал вложенность, а результат функцию вынес в case. Всё равно ошибка
Incorrect key file for table

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

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

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

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

А места на диске достаточно?
Нужно, как минимум, на размер таблицы.
Сори, невнимательно прочел. Сейчас проверю, чтобы было на размер таблицы.
...
Рейтинг: 0 / 0
22.05.2015, 14:59:24
    #38966443
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопросик по mysql
У тебя ДВА подзапроса, вложенные один в другой, имеют один и тот же алиас `t`.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / вопросик по mysql / 25 сообщений из 32, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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