Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
как сделать SQL запрос, чтоб...
|
|||
|---|---|---|---|
|
#18+
чтоб при групировке по полю num, текстовое поле text объединялось друг с другом, если оно попадает в условие групировки, например: 3 записи в таблице: num text 1 text1 1 text2 1 text3 2 text4 в итоге должно быть 2записи в таблице: 1 text1 text2 text3 2 text4 как это реализовать SQL запросом ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2003, 15:16 |
|
||
|
как сделать SQL запрос, чтоб...
|
|||
|---|---|---|---|
|
#18+
А зачем это писать на SQL. А на фоксе что нельзя? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2003, 10:57 |
|
||
|
как сделать SQL запрос, чтоб...
|
|||
|---|---|---|---|
|
#18+
2malec А вы думаете например на MSSQL это сделать можно? Там это тоже делается через функцию которая считает сумму по строке... Короче нужен индекс по num, а дальше select distinct + функция суммирования строк... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2003, 11:07 |
|
||
|
как сделать SQL запрос, чтоб...
|
|||
|---|---|---|---|
|
#18+
Ну и для общности ещё надо положить строку, полученную в результате конкатенации, в Memo поле(или в text в MSSQL) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2003, 17:03 |
|
||
|
как сделать SQL запрос, чтоб...
|
|||
|---|---|---|---|
|
#18+
2 Crip, а можно примерчик показать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2003, 08:12 |
|
||
|
как сделать SQL запрос, чтоб...
|
|||
|---|---|---|---|
|
#18+
Что-то я не понял, а разве так нельзя изобразить: Код: plaintext где: b>a какое-то условие, о котором вы тут упоминали... Или я снова чего-то не понял? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2003, 08:47 |
|
||
|
как сделать SQL запрос, чтоб...
|
|||
|---|---|---|---|
|
#18+
Да, надо убрать num и вместо iif поставить в конце условие where... Так? Что-то условие задачи я не совсем понял, извините, если что не так... Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2003, 08:50 |
|
||
|
как сделать SQL запрос, чтоб...
|
|||
|---|---|---|---|
|
#18+
IMHO нет такой возможности на VFP и MS SQL, SYBASE ASA поддерживает функцию LIST, которая позволяет выполнить "сворачивание". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2003, 12:37 |
|
||
|
как сделать SQL запрос, чтоб...
|
|||
|---|---|---|---|
|
#18+
А разве "сворачивание" не простая конкатенация символьных полей? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2003, 07:59 |
|
||
|
как сделать SQL запрос, чтоб...
|
|||
|---|---|---|---|
|
#18+
to (Sergey Ch) В запросе: Код: plaintext 1. нет таких полей как: text1, text2, text3, text4 а есть два поля: num, text ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2003, 09:21 |
|
||
|
как сделать SQL запрос, чтоб...
|
|||
|---|---|---|---|
|
#18+
To: Victor Am Большое спасибо за разъяснение, я вот и думал - что что-то тут не так. Ничего на ум не приходит, кроме как написание программного кода... Извините, если кого ввел в заблуждение... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2003, 10:25 |
|
||
|
как сделать SQL запрос, чтоб...
|
|||
|---|---|---|---|
|
#18+
Одним Select-запросом в чистом виде эта задача не может быть выполнена. Чтобы решить ее средствами Foxpro, достаточно 4-х строк кода. (Если интересно, могу показать как.) НО в любом случае, если заранее не известно, сколько будет групп и сколько строк попадает в группировку (сколько слагаемых ) , то какой должна быть длина результирующего текстового поля? По всей видимости, хоть автор сабжа и не говорит об этом, предполагается, что число слагаемых в каждой группе строго ограничено. Тогда совсем другое дело. Тогда можно извратиться и SQL-запросом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2003, 13:11 |
|
||
|
как сделать SQL запрос, чтоб...
|
|||
|---|---|---|---|
|
#18+
Один селект: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Про использование UDF ничего не говорилось, поэтому возражения не принимаются. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2003, 15:52 |
|
||
|
как сделать SQL запрос, чтоб...
|
|||
|---|---|---|---|
|
#18+
to NNN Про то, что без UDF не обойтись уже говорилось. См. Crip Я же говорил об Select-запросе в чистом виде , т.е чтобы не пришлось писать ни чего кроме 1 select-оператора Тебе пришлось написать еще 13 строк кода Даже если выкинуть необязательные Local и EndFunc, то 9. А я предлагал обойтись всего 4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2003, 21:28 |
|
||
|
как сделать SQL запрос, чтоб...
|
|||
|---|---|---|---|
|
#18+
2andrew_Pr > Даже если выкинуть необязательные Local и EndFunc, то 9. А я предлагал обойтись всего 4 Дык покажи свои 4 строки, или ждешь особого приглашения? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2003, 00:33 |
|
||
|
как сделать SQL запрос, чтоб...
|
|||
|---|---|---|---|
|
#18+
Дык покажи свои 4 строки, или ждешь особого приглашения? Жду. Люблю, когда меня попросят. :) Код: plaintext 1. 2. 3. 4. Это работает на порядок быстрее, чем Select num, MyFunc(text) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2003, 15:20 |
|
||
|
как сделать SQL запрос, чтоб...
|
|||
|---|---|---|---|
|
#18+
Андрей, ты не прав. Для начала, код в таком виде в принципе неработоспособен, поскольку полученный таким образом курор - ReadOnly. Опция ReadWrite появилась только в 7 версии, а для более младших версий требуется переоткрытие курсора (как минимум еще пара строк). Более существенно то, что при связи по SET RELATION ты фактически отбираешь только первую запись из нескольких с одинаковым значением поля Num. А как добавить значение из записей с тем же num? Если уж ты твердо решил отказаться от Select-SQL, то надо бы писать так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2003, 16:21 |
|
||
|
как сделать SQL запрос, чтоб...
|
|||
|---|---|---|---|
|
#18+
2andrew_Pr > Это работает на порядок быстрее, чем Select num, MyFunc(text) Я тут проверил, Владимир прав, это вообще не работает, даже если добавить к SELECT READWRITE :) К тому же тут 5 строк. В чем идея-то? 2ВладимирМ > Опция ReadWrite появилась только в 7 версии Неофициально после какого-то сервпака в 6-й. ИМХО. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2003, 21:52 |
|
||
|
как сделать SQL запрос, чтоб...
|
|||
|---|---|---|---|
|
#18+
От нечего делать продолжаю. По поводу скорости и правильности результатов (функцию я правда поправил) Код: plaintext 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. 48. 49. 50. 51. 52. 53. 54. 55. 56. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2003, 09:52 |
|
||
|
как сделать SQL запрос, чтоб...
|
|||
|---|---|---|---|
|
#18+
Опции ReadWrite в 6 версии нет. Ни официально, ни неофициально. У меня VFP6SP5 (более поздних SP просто не было), так вот на ReadWrite выдает синтаксическую ошибку (неизвестная фраза). По поводу кода приведенного andrew_Pr идея в общем-то понятная, но проблема в том, что команда REPLACE очень капризна в отношении записи НЕ в текущую рабочую область (что в этом коде и делается). Таких присвоений желательно всячески избегать. Даже если это сработает один раз нет никаких гарантий что тот же самый код в другом месте тоже сработает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2003, 11:05 |
|
||
|
как сделать SQL запрос, чтоб...
|
|||
|---|---|---|---|
|
#18+
to ВладимирМ и NNN Для начала, код в таком виде в принципе неработоспособен, поскольку полученный таким образом курор - ReadOnly Да виноват, ReadWrite забыл дописать и в одном месте Result1 , а в другом Result . На счет версии VFP. Я поэтому вооще-то и хотел свой код выставлять сразу. Может человек вообще к SQL-ной БД собрался обращаться, я мы тут перед ним Scan...endScan - ами трясем. Кстати сам автор вопроса-то уже и забил небось на него. А мы тут От нечего делать продолжаем :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2003, 14:16 |
|
||
|
как сделать SQL запрос, чтоб...
|
|||
|---|---|---|---|
|
#18+
в догонку вооще-то и хотел читать: вооще-то и НЕ хотел ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2003, 14:48 |
|
||
|
как сделать SQL запрос, чтоб...
|
|||
|---|---|---|---|
|
#18+
to NNN за тестировку спасибо. А вот код-то мой вы переврали, поэтому и получилась лажа у меня было Код: plaintext а вы извратили на Код: plaintext а это не одно и тоже. А в вашем-то коде какая лажа получается! Если окажется, что для первой группировочной записи myfunc возвращает строку из 1 слова ( т.е. в table1 с num=1 только 1 запись ), SQL и во всех остальных записях порежит Text до той же длины! Это конечно излечимо: не ALLTRIM(lcString), а PADR(lcString,254,' '), но все же... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2003, 16:03 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=32273658&tid=1597817]: |
0ms |
get settings: |
6ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
53ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
2ms |
| others: | 236ms |
| total: | 380ms |

| 0 / 0 |
