Danil
15.09.2017
12:20:31
есть кто живой?
Ринат
15.09.2017
12:21:34
Danil
15.09.2017
12:23:34
есть таблицы для каждого элемента вида : id - значение
Ринат
15.09.2017
12:23:47
mp_val1 а это что за
Google
Danil
15.09.2017
12:23:54
нужно сделать запрос который вернет таблицу со значениями вместо id
Ринат
15.09.2017
12:24:13
а
ну так сджойнить
Danil
15.09.2017
12:24:27
я не могу допетрить как быть с значениями ca1_id - ca4_id т.к. они берутся из одной таблицы ca
Ринат
15.09.2017
12:26:00
а таблица ca-это какая таблица? название пздц конечно
Danil
15.09.2017
12:27:10
ну блин я не стал писать все сюда. все таплицы вида id - значение
просто для ca на каждую запись идут 4 разных ca_id
структуру не я делал, и по поменять не могу ((
Ринат
15.09.2017
12:29:34
ну так занчения этих ca_id же лежат в той своднйо табличке с айдишниками?
Danil
15.09.2017
12:30:24
да лежат
Ducho
15.09.2017
12:31:42
С чем лучше изучать MySQL?
Ринат
15.09.2017
12:32:58
да лежат
ну а в чём проблема не пойму сджойнить и вытащить их значения?
Google
Danil
15.09.2017
12:39:28
я в джойнах хреново шарю сразу говорю (
делал простое объединение - оно работает для mp, md и сh. а как вытащить в строку 4 значение из таблички ca для rf;ljuj ca*_id?
Alexey
15.09.2017
12:48:31
сделай 4 джойна
join ca ca1 on ca1.id = t.ca1_id join ca ca2 on ca2.id = t.ca2_id ...
Ducho
15.09.2017
12:51:16
Знаком
Alexey
15.09.2017
12:52:29
Знаком
а что интересует в MySQL? администрирование или разработка?
Ducho
15.09.2017
12:52:37
Разработка
Советы нужны
Alexey
15.09.2017
12:56:07
если с английским хорошо, вот эту советую: https://www.amazon.com/MySQL-Cookbook-Solutions-Developers-Administrators/dp/1449374026/
автор работает техническим писателем в команде MySQL уже лет 15 минимум
Ducho
15.09.2017
12:58:50
Спс.английский у меня чуть хромает но разберусь)
Alexey
15.09.2017
13:00:02
вот, нашёл хороший список литературы. Оно формально про MariaDB, но мы же все понимаем, что 99% содержания верно и для MySQL: https://mariadb.org/learn/
Danil
15.09.2017
13:00:21
Alexey
15.09.2017
13:02:30
Danil
15.09.2017
13:22:39
все заработало!
в сумме у меня получилось 7 джойнов.
на тестовом наборе данных результат вроде совпадает
Спасибо за помощь!
SELECT
ebt.id, ebt.EBT, mpcba.mpcba as MPCBA, model.Model, chassis.Chassis, ca1.PartNumber as Cable1, ca2.PartNumber as Cable2, ca3.PartNumber as Cable3, ca4.PartNumber as Cable4, ebt.Comment
FROM
mmt_cable_ebt_list ebt
JOIN mmt_cable_mpcba_list mpcba ON ebt.mpcba_id = mpcba.id
JOIN mmt_cable_model_list model ON ebt.model_id = model.id
JOIN mmt_cable_chassis_list chassis ON ebt.chassis_id = chassis.id
JOIN mmt_cable_cable_list ca1 ON ebt.cable1_id = ca1.id
JOIN mmt_cable_cable_list ca2 ON ebt.cable2_id = ca2.id
JOIN mmt_cable_cable_list ca3 ON ebt.cable3_id = ca3.id
JOIN mmt_cable_cable_list ca4 ON ebt.cable4_id = ca4.id
Muzaffar
16.09.2017
17:02:18
ребята при такой связи ничего страшного нет?
Google
Muzaffar
16.09.2017
17:06:08
ау есть кто?
Yaroslav
16.09.2017
17:13:56
почему их две?
кто с чем связан?
Muzaffar
16.09.2017
17:15:22
типа перегон между двумя станциями
т.е. и фром и ту это форен_киес
Yaroslav
16.09.2017
17:17:19
не вижу нарушений явных
Muzaffar
16.09.2017
17:17:43
получается такой связь возможен?
Yaroslav
16.09.2017
17:18:09
1 ко многому - да
Muzaffar
16.09.2017
17:19:02
тут не только один ко многому но и два связи между двумя таблицами
Yaroslav
16.09.2017
17:19:21
да я понимаю
два разных поля
Muzaffar
16.09.2017
17:19:43
аха
значить с точки зрения проектирования бд можно
ясно спасибо! :)
Yaroslav
16.09.2017
17:20:20
я не вижу нарушений, но может я чего-то не знаю
Muzaffar
16.09.2017
17:20:24
теперь надо понять с точки зрения ОРМ можно или нет :)
Yaroslav
16.09.2017
17:20:25
погуглите
Muzaffar
16.09.2017
17:20:47
вот что просить у гугла не совсем ясно :)
Fike
16.09.2017
20:27:11
Zaur
17.09.2017
12:08:09
Всем привет. Есть таблица на ~9млн записей. Я случайно выставил всем записям текущую дату в параметре date TIMESTAMP. Есть таблица из резервной копии с нормальными датами. Подскажите самый простой способо перенести даты из резерва в текущую таблицу? Удалять таблицу целиком и переносить все данные из резерва - не вариант, хочется перенести только даты.
Google
Yaroslav
17.09.2017
12:09:43
сделать select в файл, результатом которого будет строка update table date = "нужна дата" where id = 'id' из старой таблицы. применить файл на новой.
как записывать в файл и формировать текст в селекте -> гуглите
Zaur
17.09.2017
12:10:47
Yaroslav
17.09.2017
12:11:16
Alexey
17.09.2017
12:11:36
UPDATE t_new JOIN t_old ON t_new.id = t_old.id SET t_new.ts = t_old.ts
Yaroslav
17.09.2017
12:11:55
кстать
Alexey
17.09.2017
12:12:36
этим мало кто пользуется :)
lost
17.09.2017
12:12:55
ага... на 9 миллионов записей
Zaur
17.09.2017
12:12:59
Yaroslav
17.09.2017
12:13:10
lost
17.09.2017
12:14:27
бежишь копию таблицы в цикле/курсоре и обновляешь оригинал
Zaur
17.09.2017
12:14:30
короче я понял, напишу скрипт который будет пачками селектить и апдейтить
Alexey
17.09.2017
12:16:03
lost
17.09.2017
12:16:14
а в том что такие большие запросы таблицу лочат
Alexey
17.09.2017
12:16:44
шта?
Google
lost
17.09.2017
12:17:08
next-key lock, все дела
откуда ты знаешь его структуру данных
пусть ест слона мелкими кусочками
Alexey
17.09.2017
12:18:17
я плохо себе представляют работу с покорёженной таблицей. ещё хуже представляю, когда часть данных нормальная, а часть исправленная
в условии задачи одновременного доступа не было. даже если и есть, то next-key lock — это всё-таки не лок таблицы
Zaur
17.09.2017
12:19:01
а что значит чать данных исправленная?
lost
17.09.2017
12:19:25
так что не надо делать апдейты на 9 млн записей на проде
Zaur
17.09.2017
12:19:47
эта таблица только write only, ни каких апдейтов из проиложения
Alexey
17.09.2017
12:20:05
в смысле, append-only?
Zaur
17.09.2017
12:20:11
да
Alexey
17.09.2017
12:20:23
ну и нормально всё будет
а индекс по полю timestamp вообще есть?
lost
17.09.2017
12:20:50
Zaur
17.09.2017
12:21:10
Alexey
17.09.2017
12:21:33
нет, значит и next key lock не будет. да если бы и был, ничего страшного бы не случилось