|
|
|
Как обойтись малой кровью?
|
|||
|---|---|---|---|
|
#18+
Помогите, пожалуйста решить задачу малыми ресурсами и временем задача: 1) Есть таблица следующей структуры code varchar(255) group int например: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 2) есть входные данные code4, code5 и новый code9, Надо: добавить code9 в гр., которая заранее не известна. Ее нужно определить по code4 и code5 иными словами как мне отсеять code4 и code5 и добавить code9 в группу в которой уже находятся code4 и code5? Задача реальная, не учебная. Спасибо всем, кто поможет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2012, 11:47 |
|
||
|
Как обойтись малой кровью?
|
|||
|---|---|---|---|
|
#18+
Hunterex, 1) В чём кокретно проблема? 2) Если задача реальная - какая СУБД? 3) Какие ограничения: SQL, StoProc, одним выражением, на входе три параметра или таблица (строк всегла 3)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2012, 12:06 |
|
||
|
Как обойтись малой кровью?
|
|||
|---|---|---|---|
|
#18+
Проблема в том, что приложение критично к времени выполнения. Надо как можно изящнее обновлять группы. СУБД - MSSQL, количество строк 5-10 миллионов, в группе количество членов неограниченно, но всегда >1 не хочется делать много выборок для определения того что кода нет в базе и выяснения группы куда его определить Ограничений особых нет. В основном время. Обновление группы будет проходить в отдельном треде, но тредов может быть много, поэтому от скорости будет так же зависеть и объем сжираемой памяти. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2012, 12:48 |
|
||
|
Как обойтись малой кровью?
|
|||
|---|---|---|---|
|
#18+
Hunterex, а если на входе будет: code4 code4 code9 куда надо добавить code9 ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2012, 13:01 |
|
||
|
Как обойтись малой кровью?
|
|||
|---|---|---|---|
|
#18+
Добавляется только code9 в группу где находится code4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2012, 13:04 |
|
||
|
Как обойтись малой кровью?
|
|||
|---|---|---|---|
|
#18+
Hunterex, извиняюсь - скопипастил криво ) надо так: а если на входе будет: code4 code6 code9 куда надо добавить code9 ? т.е. в две группы добавить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2012, 13:19 |
|
||
|
Как обойтись малой кровью?
|
|||
|---|---|---|---|
|
#18+
Нет. Так не будет. Будут приходить только коды, которые принадлежат одной группе. Просто со временем могут появляться в этой группе новые коды, которых нет в базе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2012, 13:24 |
|
||
|
Как обойтись малой кровью?
|
|||
|---|---|---|---|
|
#18+
HunterexНет. Так не будет. Будут приходить только коды, которые принадлежат одной группе. тогда зачем 2 кода, почему одним не обойтись ? т.е. например "code5 и новый code9" HunterexПросто со временем могут появляться в этой группе новые коды, которых нет в базе. в какой "этой" ? поле "code" уникально? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2012, 13:38 |
|
||
|
Как обойтись малой кровью?
|
|||
|---|---|---|---|
|
#18+
Hunterex, Фиг поймешь че вам нада. Научитесь сначала внятно описывать условия. ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2012, 14:00 |
|
||
|
Как обойтись малой кровью?
|
|||
|---|---|---|---|
|
#18+
1. Вы не ответили, в каком виде приходят входные данные, таки "пакетами" в виде табличек, где в каждом пакете члены только одной группы? При этом номер группы в пакете неизвестен и этот номер становится известен только в БД? 2. Вопрос практический, поэтому лучше сразу топик переносите в МS SQL... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2012, 15:47 |
|
||
|
Как обойтись малой кровью?
|
|||
|---|---|---|---|
|
#18+
Злой Бобр Фиг поймешь че вам нада. Научитесь сначала внятно описывать условия+1 Hunterex добавить code9добавить запись? Hunterex в гр., которая заранее не известна.определить группу по входным параметрам? Hunterex как мне отсеять code4 и code5 и добавить code9 в группу в которой уже находятся code4 и code5?Кроме вас на этот вопрос никто не ответит. Hunterex Надо как можно изящнее обновлять группы.Стоп-стоп-стоп, выше вы хотели добавлять запись? Hunterex количество строк 5-10 миллионовВ какой таблице? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2012, 18:04 |
|
||
|
Как обойтись малой кровью?
|
|||
|---|---|---|---|
|
#18+
Еще раз. Например, сегодня на мой запрос веб-сервис отдает мне массив из 3-кодов. Это коды деталей. Они взаимозаменяемы. Только производители разные. Я проверяю по базе. Их там нет. Записываю эту группу кодов в таблицу, присваиваю им какой-то там №. И продолжаю себе работать. Но у моего поставщика через несколько дней вдруг появились на складе детали от нового производителя, которые тоже могут заменить те детали из группы, которую я создал (см. выше). Теперь мне надо пополнить Этими новыми кодами ту группу деталей, которая уже есть в базе. Т.е., используя, терминалогию описанную выше к кодам code4 и code5 добавить новый code9. Т.е. пополнить группу 2. Вот и вся задача. Что тут не понятного? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2012, 19:06 |
|
||
|
Как обойтись малой кровью?
|
|||
|---|---|---|---|
|
#18+
Hunterex, ещё раз: 1. А может тебе завтра веб-сервис вернуть массив из 4-кодов? 2. Тебе только добавлять новые? А если группа была code2,code3,code4 а тебе серви вернул code2,code4,code5, что делать с code3? телепат switched ON: Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2012, 19:56 |
|
||
|
Как обойтись малой кровью?
|
|||
|---|---|---|---|
|
#18+
Код: sql 1. 2. То бишь у вас две принципиально разные вставки - добавить группу и пополнить группу для второго случая - вставить code9 c группой как у code4 (code5 здесь лишний и что делать если он по ошибке имеет не ту же самую группу как code4) Код: sql 1. 2. Чем вас не устраивает подход "в лоб"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2012, 20:01 |
|
||
|
Как обойтись малой кровью?
|
|||
|---|---|---|---|
|
#18+
SERG1257, insert требует прдварительной проверки на отстуствие. Либюо перехвата exeption :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2012, 20:11 |
|
||
|
Как обойтись малой кровью?
|
|||
|---|---|---|---|
|
#18+
Немного не так. получаемые мною коды - всегда принадлежат одной группе. Если группы нет - создать ее и добавить туда все коды. Если группа есть - добавить туда только новые коды, которых там нет. Из группы коды никогда не удаляются! Только пополнение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2012, 13:35 |
|
||
|
Как обойтись малой кровью?
|
|||
|---|---|---|---|
|
#18+
телепат switched ON 2: Код: 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. 43. 44. 45. 46. 47. П.С.: Hunterex, Вы лентяй! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2012, 13:44 |
|
||
|
Как обойтись малой кровью?
|
|||
|---|---|---|---|
|
#18+
Hunterex, Приведи пример в каком виде у тебя массив приходит. XML или что там у тебя? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2012, 13:52 |
|
||
|
Как обойтись малой кровью?
|
|||
|---|---|---|---|
|
#18+
Данные приходят в виде массива array[1].code array[1].manufacturer array[2].code array[2].manufacturer и т.д. Я понимаю задача сложна для понимания но мне приходится ее решать. Заметтье, группа не присутствует! Подразумевается, что детали принадлежат одной группе (ну по другому сказать это как синонимы в языке. Слова разные, а смысл один) , но новой или уже имеющейся надо определять каждый раз. В этом массиве могут быть как коды уже ранее встречавшиеся и занесенные в базу, так и наряду с ними новые, которыми надо пополнить имеющуюся группу. автор Код: sql 1. 2. можно было бы использовать если бы обе таблицы имели бы № группы, а он у меня есть только в одной. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2012, 00:28 |
|
||
|
Как обойтись малой кровью?
|
|||
|---|---|---|---|
|
#18+
Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2012, 00:58 |
|
||
|
Как обойтись малой кровью?
|
|||
|---|---|---|---|
|
#18+
это всё я уже писал - ТС не читатель... вот это SERG1257 Код: sql 1. 2. 3. 4. 5. можно поменять на Код: sql 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2012, 01:19 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=37621686&tid=1541857]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
175ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
74ms |
get tp. blocked users: |
2ms |
| others: | 209ms |
| total: | 504ms |

| 0 / 0 |
