|
Склеить 2 строки в подзапросе
|
|||
---|---|---|---|
#18+
Есть такой запрос при выборке материалов из таблицы для формирования файла в Excel. И при выборке тонировки с 2х сторон вылетает ошибка. Можно как-нибудь "склеить" 2 строки подзапроса (PL) в 1 строку? Код: 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. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2016, 17:04 |
|
Склеить 2 строки в подзапросе
|
|||
---|---|---|---|
#18+
Hello, Superbalbes! You wrote on 8 июля 2016 г. 17:12:16: Superbalbes> И при выборке тонировки с 2х сторон вылетает ошибка.куда? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2016, 17:12 |
|
Склеить 2 строки в подзапросе
|
|||
---|---|---|---|
#18+
superbalbes, Ошибка-то какая? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2016, 17:16 |
|
Склеить 2 строки в подзапросе
|
|||
---|---|---|---|
#18+
multiple rows in singleton select ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2016, 17:20 |
|
Склеить 2 строки в подзапросе
|
|||
---|---|---|---|
#18+
разбирать твой запрос лень. для определения "проблемного" куска последовательно закомментируй фрагменты запроса, пока не найдёшь нужный кусок. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2016, 17:26 |
|
Склеить 2 строки в подзапросе
|
|||
---|---|---|---|
#18+
Проблемный кусок я выделил - это Тонировка, когда тонировка с одной стороны стеклопакета - ошибки нет, если с обеих сторон - выходит вышеуказанная ошибка. Я понимаю почему (в подзапросе должно быть только одно значение, а если тонировка с обех сторон, то получается 2 значения. это не касается когда тонировка одинаковая), но не знаю как как объединить, если их больше одного. Объединение таблицы с самой собой тоже выдаёт ту же ошибку. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2016, 17:30 |
|
Склеить 2 строки в подзапросе
|
|||
---|---|---|---|
#18+
в тексте запроса проблемное место место выделено комментариями /*Тонировка начало*/ и /*Тонировка конец*/ ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2016, 17:32 |
|
Склеить 2 строки в подзапросе
|
|||
---|---|---|---|
#18+
superbalbes, LIST() туда воткни. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2016, 17:36 |
|
Склеить 2 строки в подзапросе
|
|||
---|---|---|---|
#18+
superbalbes> в тексте запроса проблемное место место выделено select first 1 goods.marking Ну или ищи почему много строк возвращается. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2016, 17:39 |
|
Склеить 2 строки в подзапросе
|
|||
---|---|---|---|
#18+
superbalbes, Возможно, тебе вместо select distinct goods.marking надо что-то типа select list(goods.marking) ? З.Ы. В запрос не вникал. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2016, 17:40 |
|
Склеить 2 строки в подзапросе
|
|||
---|---|---|---|
#18+
спасибо, ща поробую ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2016, 17:40 |
|
Склеить 2 строки в подзапросе
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустам, У него похоже FIRST 1 только одну сторону из 2-х сторонней тонировки выдаст. А вот LIST() как раз склеит обе в одну строку через разделитель. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2016, 17:41 |
|
Склеить 2 строки в подзапросе
|
|||
---|---|---|---|
#18+
как ни жаль, но у меня Firebird 2.0, а там list() нереализован по ещё. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2016, 17:48 |
|
Склеить 2 строки в подзапросе
|
|||
---|---|---|---|
#18+
сделай вместо одного подзапроса два. будет 2 поля вместо одного. для каждой стороны тонировки. если не можешь различить стороны, дёргай в первом подзапросе MIN() а в другом MAX() Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2016, 17:57 |
|
Склеить 2 строки в подзапросе
|
|||
---|---|---|---|
#18+
DarkMaster> только одну сторону из 2-х сторонней тонировки выдаст Я в запрос вообще не вникал, ну его нафик. Если советовать сделать по-человечески - лучше уж совсем запрос разбить/переписать. Чем меньше монструозности, тем лучше. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2016, 18:27 |
|
Склеить 2 строки в подзапросе
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустам, будто я вникал - присоветовал подходящее по смыслу решение ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2016, 19:19 |
|
Склеить 2 строки в подзапросе
|
|||
---|---|---|---|
#18+
Гаджимурадов РустамDarkMaster> только одну сторону из 2-х сторонней тонировки выдаст Я в запрос вообще не вникал, ну его нафик. Если советовать сделать по-человечески - лучше уж совсем запрос разбить/переписать. Чем меньше монструозности, тем лучше. Кстати о грустном - живет у меня в базе процерка, которая дает около миллиона фетчей. Родилась в результате использования других процедур (там всякая бизнес логика).С одной стороны понимаю, что лучше ее переписать нафиг для ускорения, с другой - реально монстр получится, в котором через месяц уже никто не разберется, даже если каждую строку откомментарить. Так и живем. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2016, 19:34 |
|
Склеить 2 строки в подзапросе
|
|||
---|---|---|---|
#18+
DarkMasterКстати о грустном - живет у меня в базе процерка, которая дает около миллиона фетчей. Область какая, учет, биллинг? DarkMasterРодилась в результате использования других процедур (там всякая бизнес логика).С одной стороны понимаю, что лучше ее переписать нафиг для ускорения, с другой - реально монстр получится, в котором через месяц уже никто не разберется, даже если каждую строку откомментарить. Едва ли тут можно что-то тебе посоветовать, не зная деталей. Есть 2 конца - "не навреди; работает - не трожь" и другой а-ля "стремление к совершенству повышать эффективность". Вот где-то между ними и надо искать золотую середину. Если у тебя есть задачи поважнее/посрочнее (уверен, что есть) - ну так не трогай, пока не жмёт. Если жмёт - вопрос бы не стоял. Хотя миллион фетчей в цепочке ХП - пованивает, конечно, я бы поставил в очередь "на после дедлайна". P.S. У меня в одной БД (не своей) было аналогичное - сколько там миллионов фетчилось я даже не считал, но общий расчёт длился несколько минут, а иногда и больше. Особо сильно не напрягало, ибо операция относительно редкая была. Но когда понадобилось часто получать другие данные, которые авторы (видимо из лени) получали из результатов этой процедуры (там было что-то вроде 10-15% от исходных 100%) - напрягло очень сильно, написал "копию", которая считала всё напрямую и работала на несколько порядков быстрее. Может и тебе стоит подумать о том, чтобы отстроить рядом новый домик, пока старая халупа не рухнула... Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2016, 19:51 |
|
Склеить 2 строки в подзапросе
|
|||
---|---|---|---|
#18+
Гаджимурадов РустамDarkMasterКстати о грустном - живет у меня в базе процерка, которая дает около миллиона фетчей. Область какая, учет, биллинг? Это обработка для импорта заготовок для резки стекла из одной программы в другую. Попробую с Min и Max, придётся ещё и сложением строк воспользоваться. Жаль, что LIST не реализован в этой версии, а то 70% из этого запроса уложилось бы в этот LIST. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2016, 16:04 |
|
Склеить 2 строки в подзапросе
|
|||
---|---|---|---|
#18+
Через Min() Max() получилось. Но не дай бог, если кому-то в голову взбредёт на стеклопакет из 3х стёкол на внутреннее стекло тонировку поставить. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2016, 16:59 |
|
Склеить 2 строки в подзапросе
|
|||
---|---|---|---|
#18+
superbalbes, а прогнать тонировку в FOR SELECT и склеить в переменной не судьба? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2016, 17:14 |
|
Склеить 2 строки в подзапросе
|
|||
---|---|---|---|
#18+
rdb_dev, + звать как подселект из процедуры. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2016, 17:23 |
|
Склеить 2 строки в подзапросе
|
|||
---|---|---|---|
#18+
DarkMaster, точно так! Еще можно весь селект ТС'а засунуть в ХП, разбив на два запроса FOR SELECT, чтобы внутренним FOR SELECT была тонировка. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2016, 17:28 |
|
Склеить 2 строки в подзапросе
|
|||
---|---|---|---|
#18+
rdb_dev, Смотри совет Рустама выше. Советам про LIST() вышел обломинго, т.к. у ТС 2.0 еще работает. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2016, 17:31 |
|
Склеить 2 строки в подзапросе
|
|||
---|---|---|---|
#18+
rdb_devDarkMaster, точно так! Еще можно весь селект ТС'а засунуть в ХП, разбив на два запроса FOR SELECT, чтобы внутренним FOR SELECT была тонировка. Народ, извините, я не так давно сунулся в FB, и не понимаю что такое ТС, ХП, и FOR SELECT (это как-то в процедурах реализовывается?). ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2016, 11:18 |
|
|
start [/forum/topic.php?fid=40&fpage=57&tid=1562080]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
37ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
61ms |
get tp. blocked users: |
2ms |
others: | 14ms |
total: | 157ms |
0 / 0 |