|
Select или другое?
|
|||
---|---|---|---|
#18+
Имеется таблица TBL1 : FLD1FLD21A1B2A2C3D3E4C4F Необходимо получить из TBL1 выборку следующего содержания: FLD3FLD41A1B1C1F2D2E Можно ли получить такой результат SQL запросом SELECT или здесь нужны какие-то другие способы? Направьте, пожалуйста, в каком направлении искать решение? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2017, 11:20 |
|
Select или другое?
|
|||
---|---|---|---|
#18+
sg729, завязывать с тяжелыми наркотиками. другого решения я не вижу ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2017, 11:43 |
|
Select или другое?
|
|||
---|---|---|---|
#18+
sg729 Можно ли получить такой результат SQL запросом SELECT...? Можно. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2017, 11:46 |
|
Select или другое?
|
|||
---|---|---|---|
#18+
Кот Матроскинsg729Можно ли получить такой результат SQL запросом SELECT...? Можно. Вложенные запросы? Так ведь заранее неизвестно сколько звеньев может быть в цепочке связей по ключу FLD1: A -> C -> F ... и т.д. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2017, 13:23 |
|
Select или другое?
|
|||
---|---|---|---|
#18+
sg729Кот Матроскинпропущено... Можно. Вложенные запросы? Так ведь заранее неизвестно сколько звеньев может быть в цепочке связей по ключу FLD1: A -> C -> F ... и т.д.Вкладывайте. И завязывайте с наркотиками. А ещё лучше поясните толком что ж вам надо-то? Алгоритм какой? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2017, 14:05 |
|
Select или другое?
|
|||
---|---|---|---|
#18+
Павел Воронцовsg729пропущено... Вложенные запросы? Так ведь заранее неизвестно сколько звеньев может быть в цепочке связей по ключу FLD1: A -> C -> F ... и т.д.Вкладывайте. И завязывайте с наркотиками. А ещё лучше поясните толком что ж вам надо-то? Алгоритм какой? Узнать все связи, например, узла A с другими - и прямые и косвенные (через промежуточные узлы). P.S. Наркотики сроду не употреблял -) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2017, 14:21 |
|
Select или другое?
|
|||
---|---|---|---|
#18+
sg729Узнать все связи, например, узла A с другими - и прямые и косвенные (через промежуточные узлы). вот для начала , дайте пожалуйста , 1. определения понятий "узел" и "Узел X связан с узлом Y" 2. какова связь определенных вами понятий с содержимым таблиц. sg729P.S. Наркотики сроду не употреблял -) это хорошо... это по-настоящему - без всякого стёба - хорошо... плохо, что это сразу незаметно. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2017, 18:22 |
|
Select или другое?
|
|||
---|---|---|---|
#18+
yahsg729Узнать все связи, например, узла A с другими - и прямые и косвенные (через промежуточные узлы). вот для начала , дайте пожалуйста , 1. определения понятий "узел" и "Узел X связан с узлом Y" 2. какова связь определенных вами понятий с содержимым таблиц. Узел - объект, хранящийся в базе данных. Каждый объект имеет уникальный идентификатор "A", "B", "C" и т.д. (для облегчения восприятия сути пишу здесь одной буквой, в действительности там varchar(40). Некоторые объекты (не обязательно все) связаны друг с другом. Связи задаются в таблице TBL1 записями, имеющими одинаковые значения ключевого поля FLD1. Т.е. узел "A" напрямую связан с узлом "B" (через ключ FLD1=1) и с узлом "C" (через ключ FLD1=2). В свою очередь узел "C" напрямую связан с узлом "F" (через ключ FLD1=4). Таким образом косвенно узел "A" связан и с "F" (через "С"). Задача простая - при необходимости выдернуть из TBL1 для конкретного узла (например для "А") идентификаторы всех других узлов прямо или косвенно связанных с заданным (т.е. с "А"). Пробегать по TBL1 сверху вниз - не вариант, поскольку таблица будет содержать несколько десятков (вероятно и сотен) тысяч записей. Возможен ли здесь хитрый Select - говорят да, но я пока не знаю какой. Быть может такая структура таблицы вообще не годится для этой задачи, но лучше придумать не смог. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2017, 19:24 |
|
Select или другое?
|
|||
---|---|---|---|
#18+
sg729Быть может такая структура таблицы вообще не годится для этой задачи, но лучше придумать не смог. ну в общем да... выглядит она странновато, что и породило отдельные комментарии. на самом деле вы описали отношение эквивалентности на множестве узлов. есть нехитрая теорема, что ОЭ <=> множество можно разбить на непересекающиеся подмножества, внутри которых элементы эквивалентны, а любые два элемента из разных - нет. на самом деле у вас кейз - если он точно описан - на построение компонент связности для графа. для хранения такого рода инфы больше подходит что-то вроде: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
ну и процедурой можно заполнить Group_id процедура - курсор по Knot_Objects например. т.е. если ребра графа - не быстро меняющаяся сущность, такой вариант даже желательнее чем любое определение на лету - как бы его не написать. насчет вопроса sg729Возможен ли здесь хитрый Select - говорят да, но я пока не знаю какой. при определенных дополнительных требованиях к отношению Knot_links, есть в оракле конструкции, позволяющие обходить иерархию, которые можно вкрячить в как-бы селект. но я это плохо знаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2017, 20:51 |
|
Select или другое?
|
|||
---|---|---|---|
#18+
sg729, Это поиск по дереву. Ответ сильно зависит от конкретной СУБД, которую вы используете. Общий ответ - это можно сделать с помощью одного запроса, но не всегда это разумно и эффективно. Заявленные десятки тысяч записей могут быть проблемой, а могут и не быть. Настоящей проблемой является само дерево и методы хранения информации о нем. Есть несколько подходов к этому, литературы в сети море. Ищите, адаптируйте.... Указанная Вами схема очевидным образом не соответствует заявленной же задаче использования. Если операция "достать все связи узла" частая и критичная по времени, то придется повозиться. Храните полное дерево, отслеживайте его заполнение с помощью триггеров-процедур и доставайте нужные связи быстро. Если операция редкая и пользователь может подождать - напишите запрос/процедуру для перебора дерева и будет вам счастье. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2017, 06:48 |
|
Select или другое?
|
|||
---|---|---|---|
#18+
waszkiewiczsg729, завязывать с тяжелыми наркотиками. другого решения я не вижу Автора все еще плющит ) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2017, 10:28 |
|
Select или другое?
|
|||
---|---|---|---|
#18+
yahмножество можно разбить на непересекающиеся подмножества, внутри которых элементы эквивалентны, а любые два элемента из разных - нет Вот именно это мне и нужно! Вертелось в голове нечто похожее, но никак не мог ухватить суть. Теперь ясно куда грести. Очевидно Вы правы, проще сгенерировать дерево связей и хранить его в базе, модифицируя по мере необходимости. Спасибо! -) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2017, 14:36 |
|
Select или другое?
|
|||
---|---|---|---|
#18+
Павел Воронцовsg729, Храните полное дерево, отслеживайте его заполнение с помощью триггеров-процедур и доставайте нужные связи быстро. Пожалуй так и сделаю. Почему-то думал, что при таком подходе для удаления выбранной связи будет трудно реализовать модификацию дерева без его полного перестроения (что заняло бы много времени), но оказалось, что можно найти приемлемое решение. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2017, 14:47 |
|
Select или другое?
|
|||
---|---|---|---|
#18+
Злой Бобрwaszkiewiczsg729, завязывать с тяжелыми наркотиками. другого решения я не вижу Автора все еще плющит ) Неужели я похож на сумасшедшего? -) А впрочем, стебитесь на здоровье, смех продлевает жизнь -) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2017, 14:54 |
|
Select или другое?
|
|||
---|---|---|---|
#18+
sg729yahмножество можно разбить на непересекающиеся подмножества, внутри которых элементы эквивалентны, а любые два элемента из разных - нет Вот именно это мне и нужно! Вертелось в голове нечто похожее, но никак не мог ухватить суть. Теперь ясно куда грести. Очевидно Вы правы, проще сгенерировать дерево связей и хранить его в базе, модифицируя по мере необходимости. Спасибо! -) наслаждайтесь ... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2017, 20:03 |
|
Select или другое?
|
|||
---|---|---|---|
#18+
yah наслаждайтесь Премного благодарен! -) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2017, 20:38 |
|
Select или другое?
|
|||
---|---|---|---|
#18+
sg729Павел Воронцовпропущено... Вкладывайте. И завязывайте с наркотиками. А ещё лучше поясните толком что ж вам надо-то? Алгоритм какой? Узнать все связи, например, узла A с другими - и прямые и косвенные (через промежуточные узлы). P.S. Наркотики сроду не употреблял -) ДА ЛАДНО!!! ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2017, 18:06 |
|
|
start [/forum/topic.php?fid=32&msg=39552755&tid=1540113]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
164ms |
get topic data: |
13ms |
get forum data: |
2ms |
get page messages: |
65ms |
get tp. blocked users: |
1ms |
others: | 236ms |
total: | 512ms |
0 / 0 |