powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Select или другое?
18 сообщений из 18, страница 1 из 1
Select или другое?
    #39552755
sg729
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Имеется таблица TBL1 :
FLD1FLD21A1B2A2C3D3E4C4F
Необходимо получить из TBL1 выборку следующего содержания:
FLD3FLD41A1B1C1F2D2E
Можно ли получить такой результат SQL запросом SELECT или здесь нужны какие-то другие способы?
Направьте, пожалуйста, в каком направлении искать решение?
...
Рейтинг: 0 / 0
Select или другое?
    #39552779
waszkiewicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg729,
завязывать с тяжелыми наркотиками. другого решения я не вижу
...
Рейтинг: 0 / 0
Select или другое?
    #39552781
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg729
Можно ли получить такой результат SQL запросом SELECT...?
Можно.
...
Рейтинг: 0 / 0
Select или другое?
    #39552827
sg729
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо!
...
Рейтинг: 0 / 0
Select или другое?
    #39552835
sg729
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кот Матроскинsg729Можно ли получить такой результат SQL запросом SELECT...?
Можно.
Вложенные запросы? Так ведь заранее неизвестно сколько звеньев может быть в цепочке связей по ключу FLD1:
A -> C -> F ... и т.д.
...
Рейтинг: 0 / 0
Select или другое?
    #39552866
Фотография Павел Воронцов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg729Кот Матроскинпропущено...

Можно.
Вложенные запросы? Так ведь заранее неизвестно сколько звеньев может быть в цепочке связей по ключу FLD1:
A -> C -> F ... и т.д.Вкладывайте. И завязывайте с наркотиками.

А ещё лучше поясните толком что ж вам надо-то? Алгоритм какой?
...
Рейтинг: 0 / 0
Select или другое?
    #39552876
sg729
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Павел Воронцовsg729пропущено...

Вложенные запросы? Так ведь заранее неизвестно сколько звеньев может быть в цепочке связей по ключу FLD1:
A -> C -> F ... и т.д.Вкладывайте. И завязывайте с наркотиками.

А ещё лучше поясните толком что ж вам надо-то? Алгоритм какой?
Узнать все связи, например, узла A с другими - и прямые и косвенные (через промежуточные узлы).
P.S.
Наркотики сроду не употреблял -)
...
Рейтинг: 0 / 0
Select или другое?
    #39553013
Фотография yah
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg729Узнать все связи, например, узла A с другими - и прямые и косвенные (через промежуточные узлы).

вот для начала , дайте пожалуйста ,
1. определения понятий "узел" и "Узел X связан с узлом Y"
2. какова связь определенных вами понятий с содержимым таблиц.

sg729P.S.
Наркотики сроду не употреблял -)
это хорошо... это по-настоящему - без всякого стёба - хорошо...
плохо, что это сразу незаметно.
...
Рейтинг: 0 / 0
Select или другое?
    #39553065
sg729
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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 - говорят да, но я пока не знаю какой. Быть может такая структура таблицы вообще не годится для этой задачи, но лучше придумать не смог.
...
Рейтинг: 0 / 0
Select или другое?
    #39553114
Фотография yah
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg729Быть может такая структура таблицы вообще не годится для этой задачи, но лучше придумать не смог.
ну в общем да... выглядит она странновато, что и породило отдельные комментарии.
на самом деле вы описали отношение эквивалентности на множестве узлов.
есть нехитрая теорема, что ОЭ <=> множество можно разбить на непересекающиеся подмножества, внутри которых элементы эквивалентны, а любые два элемента из разных - нет.
на самом деле у вас кейз - если он точно описан - на построение компонент связности для графа.
для хранения такого рода инфы больше подходит что-то вроде:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
 CREATE TABLE Knot_Objects( Knot_Id VARCHAR(40), Group_id INT)
 CREATE TABLE Knot_Links(link_Id INT,  from_Knot_Id VARCHAR(40), to_Knot_Id VARCHAR(40), link_Type int)
 
 INSERT INTO Knot_Objects VALUES ('a', null)
 INSERT INTO Knot_Objects VALUES ('b', null)
 INSERT INTO Knot_Objects VALUES ('c', null)
 INSERT INTO Knot_Objects VALUES ('d', null)
 INSERT INTO Knot_Objects VALUES ('e', null)
 INSERT INTO Knot_Objects VALUES ('f', null)
 
 INSERT INTO Knot_links VALUES (1, 'a', 'b', 0)
 INSERT INTO Knot_links VALUES (2, 'a', 'с', 0)
 INSERT INTO Knot_links VALUES (3, 'd', 'e', 0)
 INSERT INTO Knot_links VALUES (4, 'c', 'f', 0)
 
 SELECT * FROM Knot_Objects AS ko
 SELECT * FROM Knot_Links AS kl


ну и процедурой можно заполнить Group_id
процедура - курсор по Knot_Objects например.
т.е. если ребра графа - не быстро меняющаяся сущность, такой вариант даже желательнее чем любое определение на лету - как бы его не написать.

насчет вопроса
sg729Возможен ли здесь хитрый Select - говорят да, но я пока не знаю какой.

при определенных дополнительных требованиях к отношению Knot_links, есть в оракле конструкции, позволяющие обходить иерархию, которые можно вкрячить в как-бы селект. но я это плохо знаю.
...
Рейтинг: 0 / 0
Select или другое?
    #39553203
Фотография Павел Воронцов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg729,

Это поиск по дереву. Ответ сильно зависит от конкретной СУБД, которую вы используете. Общий ответ - это можно сделать с помощью одного запроса, но не всегда это разумно и эффективно. Заявленные десятки тысяч записей могут быть проблемой, а могут и не быть. Настоящей проблемой является само дерево и методы хранения информации о нем. Есть несколько подходов к этому, литературы в сети море. Ищите, адаптируйте.... Указанная Вами схема очевидным образом не соответствует заявленной же задаче использования. Если операция "достать все связи узла" частая и критичная по времени, то придется повозиться. Храните полное дерево, отслеживайте его заполнение с помощью триггеров-процедур и доставайте нужные связи быстро. Если операция редкая и пользователь может подождать - напишите запрос/процедуру для перебора дерева и будет вам счастье.
...
Рейтинг: 0 / 0
Select или другое?
    #39553289
Злой Бобр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
waszkiewiczsg729,
завязывать с тяжелыми наркотиками. другого решения я не вижу
Автора все еще плющит )
...
Рейтинг: 0 / 0
Select или другое?
    #39553564
sg729
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
yahмножество можно разбить на непересекающиеся подмножества, внутри которых элементы эквивалентны, а любые два элемента из разных - нет
Вот именно это мне и нужно! Вертелось в голове нечто похожее, но никак не мог ухватить суть. Теперь ясно куда грести. Очевидно Вы правы, проще сгенерировать дерево связей и хранить его в базе, модифицируя по мере необходимости. Спасибо! -)
...
Рейтинг: 0 / 0
Select или другое?
    #39553574
sg729
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Павел Воронцовsg729,
Храните полное дерево, отслеживайте его заполнение с помощью триггеров-процедур и доставайте нужные связи быстро.
Пожалуй так и сделаю. Почему-то думал, что при таком подходе для удаления выбранной связи будет трудно реализовать модификацию дерева без его полного перестроения (что заняло бы много времени), но оказалось, что можно найти приемлемое решение.
...
Рейтинг: 0 / 0
Select или другое?
    #39553584
sg729
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Злой Бобрwaszkiewiczsg729,
завязывать с тяжелыми наркотиками. другого решения я не вижу
Автора все еще плющит )
Неужели я похож на сумасшедшего? -) А впрочем, стебитесь на здоровье, смех продлевает жизнь -)
...
Рейтинг: 0 / 0
Select или другое?
    #39553862
Фотография yah
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg729yahмножество можно разбить на непересекающиеся подмножества, внутри которых элементы эквивалентны, а любые два элемента из разных - нет
Вот именно это мне и нужно! Вертелось в голове нечто похожее, но никак не мог ухватить суть. Теперь ясно куда грести. Очевидно Вы правы, проще сгенерировать дерево связей и хранить его в базе, модифицируя по мере необходимости. Спасибо! -)

наслаждайтесь
...
Рейтинг: 0 / 0
Select или другое?
    #39553872
sg729
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
yah наслаждайтесь
Премного благодарен! -)
...
Рейтинг: 0 / 0
Select или другое?
    #39554594
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg729Павел Воронцовпропущено...
Вкладывайте. И завязывайте с наркотиками.

А ещё лучше поясните толком что ж вам надо-то? Алгоритм какой?
Узнать все связи, например, узла A с другими - и прямые и косвенные (через промежуточные узлы).
P.S.
Наркотики сроду не употреблял -)

ДА ЛАДНО!!!
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Select или другое?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]