|
|
|
Помогите разобраться с HAVING
|
|||
|---|---|---|---|
|
#18+
Доброго вечера! Есть у меня таблица в которой описаны элементы. У каждого элемента есть координаты: номер колонки и номер строки в которой он находится. И длина (количество занимаемых ячеек). Код: sql 1. 2. 3. 4. 5. 6. Эти элементы располагаются в клеточках одной строки не пересекаясь. Т.е. отрезки [col, col+length] элементов одной строки в таблице не пересекаются. Задача такая: Мне надо сдвинуть все элементы правее данного элемента ( $ELEMENT_ID ) вправо на одну ячейку. Причём элементы надо сдвигать только те которые стоят подряд вплотную к искомому элементу. Ну т.е. если описаны 3 элемента (колонка:длина): ======================================= (1:2) (3:1) (6:3), то при выполнении нужной мне операции для первого элемента, должен сдвинуться лишь второй элемент, т.к. только он вплотную с первым стоит и результат должен быть: (1:2) (4:1) (6:3) А для набора: (1:2) (3:1) (4:3) при такой же операции для первого элемента, сдвинутся второй и третий, т.к. они влотную с первым стоят и результат должен быть: (1:2) (4:1) (5:3) Как я пытаюсь это сделать: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. т.е. выбираю элементы правее данного (a1.col>b1.col) и пытаюсь ограничить выборку условием что они вплотную к нему, т.е. максимальная разница координат концов выбранных элементов с данным должна быть равна сумме длин выбраных элементов. Но не выходит почему-то. Может я не правильно понимаю смысл HAVING? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2016, 00:51 |
|
||
|
Помогите разобраться с HAVING
|
|||
|---|---|---|---|
|
#18+
Сам понял одну из ошибок в запросе, мне ведь в подзапросе надо получить все элементы вплотную и правее чем данный, а я их сгруппировав по номеру строки получаю всегда один элемент. Т.е. как минимум запрос: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Но один фиг выдаёт один элемент :( Помогите разобраться пожалуйста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2016, 01:02 |
|
||
|
Помогите разобраться с HAVING
|
|||
|---|---|---|---|
|
#18+
Уважаемые, подскажите мне пожалуйста как получить в озвученой таблице для данного элемента, суммы длин элементов которые правее данного? Т.е. если есть в таблице данные: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. то получить для id=4 результат, суммы длин от 5-го до каждого из тех которые правей него, т.е. Код: sql 1. 2. 3. 4. 5. 6. 7. Не могу сам что-то допереть. А такого запроса мне для решения изначальной задачи хватит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2016, 10:49 |
|
||
|
Помогите разобраться с HAVING
|
|||
|---|---|---|---|
|
#18+
kormot, то получить для id=4 результат, суммы длин от 5-го до каждого из тех которые правей него, т.е. на самом деле то получить для id=4 результат, суммы длин от 4-го до каждого из тех которые правей него, т.е. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2016, 10:50 |
|
||
|
Помогите разобраться с HAVING
|
|||
|---|---|---|---|
|
#18+
так и считаете SELECT SUM(t.len) from elements as t where t.id>4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2016, 14:58 |
|
||
|
Помогите разобраться с HAVING
|
|||
|---|---|---|---|
|
#18+
Alex_Ustinov, Но в таком случае результатом будет одно число - сумма всех длин начиная с какого-то элемента. А мне надо суммы длин от данного до каждого из последующих элементов. Т.е. от 4-го до 5-го, от 4-го до 6-го, от 4-го до 7-го и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2016, 16:24 |
|
||
|
Помогите разобраться с HAVING
|
|||
|---|---|---|---|
|
#18+
kormot, Читайте про переменные: http://www.sql.ru/forum/684431/faq-numeraciya-strok-i-drugie-voprosy-pro-ispolzovanie-peremennyh ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2016, 08:04 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=39201424&tid=1831997]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
190ms |
get topic data: |
7ms |
get forum data: |
1ms |
get page messages: |
34ms |
get tp. blocked users: |
1ms |
| others: | 248ms |
| total: | 508ms |

| 0 / 0 |
