|
|
|
массовое изменение значений ячеек
|
|||
|---|---|---|---|
|
#18+
приветствую вас, добрые форумчане! вот какой страшной задачей я озадачился: предположим у нас есть таблица, в которой имеются некие суммы по каждому из месяцев: Код: plaintext 1. 2. 3. 4. ситуация усложняется еще тем, что в моей таблице перед самими месяцами таких вот столбцов с id еще 5 штук... тоесть вместо Код: sql 1. мне в этом запросе придется писать еще чтото типа Код: sql 1. и если предложите писать после каждого месяца этот WHERE, это напрочь снесет мою крышу... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2015, 22:00:10 |
|
||
|
массовое изменение значений ячеек
|
|||
|---|---|---|---|
|
#18+
S_Layer, Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2015, 22:05:10 |
|
||
|
массовое изменение значений ячеек
|
|||
|---|---|---|---|
|
#18+
[quot S_Layer]приветствую вас, добрые форумчане! вот какой страшной задачей я озадачился: предположим у нас есть таблица, в которой имеются некие суммы по каждому из месяцев: Код: plaintext 1. 2. 3. 4. уже плохо, уже двойка. нарушение первой нормальной формы, нужно перепроектировать бд, должна быть одна сумма и плюс месяц в первичный ключь, и 12 записей на год, а не 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2015, 22:50:18 |
|
||
|
массовое изменение значений ячеек
|
|||
|---|---|---|---|
|
#18+
MasterZivнарушение первой нормальной формы, нужно перепроектировать бд, должна быть одна сумма и плюс месяц в первичный ключь, и 12 записей на год, а не 1. чо? всмысле не могли бы вы конкретизировать своё мнение? если быть точным, то я не понял ни процента смысла вашего высказывания ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2015, 23:07:40 |
|
||
|
массовое изменение значений ячеек
|
|||
|---|---|---|---|
|
#18+
вадяWHERE id in(1,3,5,8)не! это пригодится если надо 4 строки с этими айдишниками сбивать в кучку. а я имел ввиду, что на самом деле у меня строение таблицы примерно следующее (в месяцах там деньги, некие суммы денег): Код: plaintext 1. 2. и вот надо теперь добавить вот какую строку Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2015, 23:25:13 |
|
||
|
массовое изменение значений ячеек
|
|||
|---|---|---|---|
|
#18+
S_LayerMasterZivнарушение первой нормальной формы, нужно перепроектировать бд, должна быть одна сумма и плюс месяц в первичный ключь, и 12 записей на год, а не 1. чо? всмысле не могли бы вы конкретизировать своё мнение? если быть точным, то я не понял ни процента смысла вашего высказывания ну перечитай еще раз... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2015, 00:07:03 |
|
||
|
массовое изменение значений ячеек
|
|||
|---|---|---|---|
|
#18+
MasterZiv нарушение первой нормальной формы , нужно перепроектировать бд, должна быть одна сумма и плюс месяц в первичный ключь, и 12 записей на год, а не 1.нуу, ващет не первой ... а так - "да", у ТС явный "Эксель головного мозга" и таблица, "криком кричит" - требует нормализации ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2015, 00:17:11 |
|
||
|
массовое изменение значений ячеек
|
|||
|---|---|---|---|
|
#18+
тоесть структуру устроить вместо 1 строки с 6ю айдишниками и 12ю суммами по месяцам сделать 6 айдишников, сумму и номер месяца? а потом при вносе данных делать 12 запросов? вносятся данные исключительно все 12 месяцев за раз. а потом, когда найдется решение вышестоящей проблемы, то еще 12 запросов, если надо всего одну такую строчку добавить. а если их 5 - то предлагаете делать 60 запросов на 1 клик пользователя?) имхо, милейший, это бред. я с такой структуры начал, потом понял что нужно всетаки именно так, как описано в вопросе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2015, 00:18:55 |
|
||
|
массовое изменение значений ячеек
|
|||
|---|---|---|---|
|
#18+
S_Layer, где 6ть айдишников? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2015, 00:24:04 |
|
||
|
массовое изменение значений ячеек
|
|||
|---|---|---|---|
|
#18+
в структуре таблицы у меня 1st_id, 2nd_id, 3rd_id, 4rd_id, 5th_id, 6th_id ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2015, 00:27:27 |
|
||
|
массовое изменение значений ячеек
|
|||
|---|---|---|---|
|
#18+
S_Layerв структуре таблицы у меня 1st_id, 2nd_id, 3rd_id, 4rd_id, 5th_id, 6th_idИи? в чём смысл этих 6ти айдишников? Значения М1-М12 для них, что одинаковые? Если для них смысл есть, как для отдельных сущностей (в чём я сильно сомневаюсь), то это ГРУППА, которой будет присвоен свой ИД, и ИД этой группы и будет использоваться в таб. id_gr M Value ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2015, 00:33:59 |
|
||
|
массовое изменение значений ячеек
|
|||
|---|---|---|---|
|
#18+
ну коль с образным мышлением не получается, давайте придумаем подходящий поясняющий аналоговый пример. скажем, country_id, city_id, street_id и 12 полей с месяцами, в которые вносятся итоговые суммы по аренде за каждый месяц отдельно. может так понятнее строение таблицы. так вот, у меня структура почти такая же, только без привязок одного к другому. абстрактная "улица" с айдишником 12 может быть в любом городе, в любой из стран. и вот скажем мне надо добавить строку с улицей "Дерибасовская", находящаяся во Франции, в Городе Ламумба, а значение полей 12-ти месяцев должно сложиться из значений полей тех же месяцев (март+март, август+август) улиц "Брайтон Бич" и "5ая Авеню", в той же Франции, в том же Ламумба. весьма странный пример, но точно описывает структуру моей таблицы. (а по предложению многоуважаемого MasterZiv эта операция будет делать минимум(!) 12 запросов) по вообще абстрактному объяснению - езжайте во Францию, город Ламумба, возьмите из холодильника на Брайтон Бич кусок колбасы, возьмите из холодильника на 5й Авеню хлеба шматок и на улице Дерибасовская в холодильник положите получившийся бутерброд. что-то меня несёт по-страшному)))))))))))))) не читайте этот абзац-бред ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2015, 01:01:41 |
|
||
|
массовое изменение значений ячеек
|
|||
|---|---|---|---|
|
#18+
*немного подумав* двумя запросами я всегда успею это сделать: Код: sql 1. получаем две строки. складываем каждый из месяцев попарно и результат засовываем в таблицу Код: sql 1. но как упростить это до одного запроса?... (а по предложению многоуважаемого MasterZiv эта операция будет делать 13 запросов (1 на выборку 24х строк и 12 INSERT'ов)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2015, 01:17:11 |
|
||
|
массовое изменение значений ячеек
|
|||
|---|---|---|---|
|
#18+
S_LayerвадяWHERE id in(1,3,5,8)не! это пригодится если надо 4 строки с этими айдишниками сбивать в кучку. а я имел ввиду, что на самом деле у меня строение таблицы примерно следующее (в месяцах там деньги, некие суммы денег): Код: plaintext 1. 2. и вот надо теперь добавить вот какую строку Код: plaintext 1. Код: sql 1. 2. 3. P.S. MasterZiv, кстати, скорее всего прав насчет реорганизации таблицы. Тогда запрос был в разы короче и проще. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2015, 01:19:00 |
|
||
|
массовое изменение значений ячеек
|
|||
|---|---|---|---|
|
#18+
S_Layerну коль с образным мышлением не получается, давайте придумаем подходящий поясняющий аналоговый пример. скажем, country_id, city_id, street_id и 12 полей с месяцами, в которые вносятся итоговые суммы по аренде за каждый месяц отдельно. может так понятнее строение таблицы. так вот, у меня структура почти такая же, только без привязок одного к другому. абстрактная "улица" с айдишником 12 может быть в любом городе, в любой из стран. и вот скажем мне надо добавить строку с улицей "Дерибасовская", находящаяся во Франции, в Городе Ламумба, а значение полей 12-ти месяцев должно сложиться из значений полей тех же месяцев (март+март, август+август) улиц "Брайтон Бич" и "5ая Авеню", в той же Франции, в том же Ламумба. весьма странный пример, но точно описывает структуру моей таблицы. (а по предложению многоуважаемого MasterZiv эта операция будет делать минимум(!) 12 запросов) по вообще абстрактному объяснению - езжайте во Францию, город Ламумба, возьмите из холодильника на Брайтон Бич кусок колбасы, возьмите из холодильника на 5й Авеню хлеба шматок и на улице Дерибасовская в холодильник положите получившийся бутерброд. что-то меня несёт по-страшному)))))))))))))) не читайте этот абзац-бредЭээ, нет, коллега :) С аналогией стало только хуже ... "Аналогия" - четко иерархическая, и просто обязанна быть нормализованна Страны ==> ГородаСтран ==> УлицыГородовСтран ==> ТаТаблицаПроКоторуюРечь ТаТаблицаПроКоторуюРечь, с полями ид_УлицыГородовСтран М Значение ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2015, 01:27:11 |
|
||
|
массовое изменение значений ячеек
|
|||
|---|---|---|---|
|
#18+
miksoftЧто-то Вы сами себе противоречите. Это суммирование разве не есть "сбивание в кучу"? да, тут я попутался. наверное это можно както приложить miksoftINSERT INTO mytable (1st_id, 2nd_id, 3rd_id, ... , month1, month2, ...) SELECT 7, MIN(2nd_id), MIN(3rd_id), ... , SUM(month1), SUM(month2), ... WHERE id IN (1,2) SELECT 7 - это так писать айдишник новой записи?) а почему MIN(2nd_id), MIN(3rd_id)? это что даст? ну тут щас сам подумаю на что заменить. мысли вроде бы получили вектор. ушел в себя, думать... miksoftP.S. MasterZiv, кстати, скорее всего прав насчет реорганизации таблицы. Тогда запрос был в разы короче и проще.... и в разы их (запросов) больше ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2015, 01:48:21 |
|
||
|
массовое изменение значений ячеек
|
|||
|---|---|---|---|
|
#18+
Код: sql 1. прекраснейшее решение! СПАСИБО! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2015, 02:15:55 |
|
||
|
массовое изменение значений ячеек
|
|||
|---|---|---|---|
|
#18+
только 5чку там пропустил... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2015, 02:17:27 |
|
||
|
массовое изменение значений ячеек
|
|||
|---|---|---|---|
|
#18+
я всегда знал две вещи: нет предела извращениям и мозг варит ночью лучше. усложняем задачу: теперь нам надо не сложить 2 этих значения, а, например, вычесть одно из другого или, например, умножить или даже разницу высчитать. и вот решение! Код: sql 1. 2. 3. 4. 5. 6. там где написано ON 1=1 явно можно написать 1 или true или еще что-то, но без ON как таковой оно не хочет работать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2015, 04:21:59 |
|
||
|
массовое изменение значений ячеек
|
|||
|---|---|---|---|
|
#18+
S_Layerам где написано ON 1=1 явно можно написать 1 или true или еще что-то,а ещё там можно написать cross jоin или вообще написать inner join и убрать условия связывания из where туда, где им самое место ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2015, 05:01:56 |
|
||
|
массовое изменение значений ячеек
|
|||
|---|---|---|---|
|
#18+
S_LayermiksoftP.S. MasterZiv, кстати, скорее всего прав насчет реорганизации таблицы. Тогда запрос был в разы короче и проще.... и в разы их (запросов) большеНасколько я понял его мысль - один запрос так и останется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2015, 09:23:08 |
|
||
|
массовое изменение значений ячеек
|
|||
|---|---|---|---|
|
#18+
КоддовMasterZiv нарушение первой нормальной формы , нужно перепроектировать бд, должна быть одна сумма и плюс месяц в первичный ключь, и 12 записей на год, а не 1.нуу, ващет не первой ... Именно первой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2015, 12:36:10 |
|
||
|
массовое изменение значений ячеек
|
|||
|---|---|---|---|
|
#18+
S_Layerтоесть структуру устроить вместо 1 строки с 6ю айдишниками и 12ю суммами по месяцам сделать 6 айдишников, сумму и номер месяца? Код: sql 1. 2. 3. 4. 5. 6. 7. 8. S_Layerа потом при вносе данных делать 12 запросов? вносятся данные исключительно все 12 месяцев за раз. Да. Это не имеет значения, сколько будет запросов вставки. S_Layerа потом, когда найдется решение вышестоящей проблемы, то еще 12 запросов, если надо всего одну такую строчку добавить. а если их 5 - то предлагаете делать 60 запросов на 1 клик пользователя?) имхо, милейший, это бред. я с такой структуры начал, потом понял что нужно всетаки именно так, как описано в вопросе. Ну, успехов в работе, как говорится. Я сделал всё, что мог. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2015, 12:40:05 |
|
||
|
массовое изменение значений ячеек
|
|||
|---|---|---|---|
|
#18+
MasterZivКоддовпропущено... нуу, ващет не первой ... Именно первой.И где же там несколько значений в одном поле? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2015, 12:42:09 |
|
||
|
массовое изменение значений ячеек
|
|||
|---|---|---|---|
|
#18+
Код: sql 1. 2. 3. 4. 5. 6. 7. 8. автортеперь нужно внести некую новую строку, в которой мне нужно получить сумму записей по каждому из месяцев с id, например, 1 и с id, например, 2. Код: sql 1. 2. 3. 4. Только тут ты что-то темнишь, потому что с конкретным ID и за конкретный месяц будет только одна запись -- суммировать нечего. Возможно, имелось в виду Код: sql 1. 2. 3. 4. Ну тогда так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2015, 12:45:43 |
|
||
|
массовое изменение значений ячеек
|
|||
|---|---|---|---|
|
#18+
miksoftMasterZivпропущено... Именно первой.И где же там несколько значений в одном поле? +1 присоединяюсь к вопросу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2015, 13:14:01 |
|
||
|
массовое изменение значений ячеек
|
|||
|---|---|---|---|
|
#18+
Коддовmiksoftпропущено... И где же там несколько значений в одном поле? +1 присоединяюсь к вопросу M1, M2, M3 ... M12 -- это на самом деле одно поле, массив. В РСУБД есть два (хотя может быть есть и ещё) способа изобразить неатомарное поле (массив): хранить в одном поле (символьном) много значений через разделитель ('42,43,44,45') (длинна массива переменная) хранить много значений в разных полях одной записи, имена полей индексировать (всё как в примере) (длина массива фиксированная). Можно ещё хранить в поле XML, JSON, и всё подобное. Это всё -- нарушение 1-ой нормальной формы отношения. Это не страшно , если данные внутри этого поля не обрабатываются внутри БД (т.е. запросами). Но если будет попытка обработки внутри БД -- это будет никак не сделать средствами SQL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2015, 14:38:28 |
|
||
|
массовое изменение значений ячеек
|
|||
|---|---|---|---|
|
#18+
MasterZivM1, M2, M3 ... M12 -- это на самом деле одно поле, массив.Откуда это следует? Если только из неумения топикстартера оформлять свои посты, не более того. Причем из его S_Layer Код: sql 1. следует, что это таки отдельные поля. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2015, 15:35:49 |
|
||
|
массовое изменение значений ячеек
|
|||
|---|---|---|---|
|
#18+
miksoftMasterZivM1, M2, M3 ... M12 -- это на самом деле одно поле, массив.Откуда это следует? Если только из неумения топикстартера оформлять свои посты, не более того. Блин, если бы не ты это спрашивал, я бы не был удивлён, но ты-то мог бы и догадаться. У этих полей ОДНО И ТО ЖЕ НАЗНАЧЕНИЕ. Это по сути -- массив полей. Ребята, я на самом деле устал немного букварные истины вам тут вещать, это же из первых лекций по теории РБД... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2015, 16:36:40 |
|
||
|
массовое изменение значений ячеек
|
|||
|---|---|---|---|
|
#18+
miksoftMasterZivM1, M2, M3 ... M12 -- это на самом деле одно поле, массив.Откуда это следует? Если только из неумения топикстартера оформлять свои посты, не более того. Причем из его S_Layer Код: sql 1. следует, что это таки отдельные поля. Я не оспариваю, что в его БД это не отдельные поля. Я говорю о том, что логически в его БД -- это одно поле, массив. Физически -- набор полей, чьи имена проиндексированы (содержат индекс элемента как часть имени поля). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2015, 16:38:32 |
|
||
|
массовое изменение значений ячеек
|
|||
|---|---|---|---|
|
#18+
MasterZivРебята, я на самом деле устал немного букварные истины вам тут вещать, это же из первых лекций по теории РБД...Да и не надо. Кроме топикстартера никто и не возражал, что таблице просится перепроектирование. И, скорее всего, не только этой таблице. MasterZivУ этих полей ОДНО И ТО ЖЕ НАЗНАЧЕНИЕ.Я бы не был так уверен, исходя из увлечения топистартером "образным мышлением". Предлагаю не пытаться разглядеть пророчества в чаинках, а то так можно и Грима нагадать. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2015, 17:14:09 |
|
||
|
|

start [/forum/topic.php?all=1&fid=47&tid=1833334]: |
0ms |
get settings: |
7ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
50ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
74ms |
get tp. blocked users: |
1ms |
| others: | 194ms |
| total: | 351ms |

| 0 / 0 |
