|
|
|
Все связи с одной таблице
|
|||
|---|---|---|---|
|
#18+
Ребят, чет туплю. есть таблица id,src,dst пример записей 1,5,19 2,3,6 3,6,5 4,19,6 5,4,8 то есть таблица показывает кто с кем связан. Мне же нужно вытащить все эти связи. Например для src=5 получим 5,19 19,6 6,5 3,6 а для src=4 только 4,8 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2016, 07:23 |
|
||
|
Все связи с одной таблице
|
|||
|---|---|---|---|
|
#18+
одним запросом никак, только ХПшкой типа такой 13675569 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2016, 07:25 |
|
||
|
Все связи с одной таблице
|
|||
|---|---|---|---|
|
#18+
tanglir, в моём случае база ro так что скорее всего придется это дерево на стороне клиента строить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2016, 07:36 |
|
||
|
Все связи с одной таблице
|
|||
|---|---|---|---|
|
#18+
ShadowMaster63, непонятно откуда взялось 3,6 для src=5. Если число связей конечно и невелико, то можно через переменную и UNION: Код: plsql 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2016, 08:26 |
|
||
|
Все связи с одной таблице
|
|||
|---|---|---|---|
|
#18+
Громыхатель, 3,6 взялось потому что в таблице 3 дружит с 6. я так понимаю это стандартная задачи по типу друзья друзей. То есть 3 косвенно связано с 5. Число связей конечно, но велико. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2016, 08:36 |
|
||
|
Все связи с одной таблице
|
|||
|---|---|---|---|
|
#18+
ShadowMaster63, я не вижу где в ваших данных связь с 3. Такой цифры вообще нет в колонке dst. 5,19 -> 19,6 -> 6,5 -> должно быть 5,19 (вроде бы...) Или я не понял алгоритм, или вы указали не полные исходные данные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2016, 08:45 |
|
||
|
Все связи с одной таблице
|
|||
|---|---|---|---|
|
#18+
Громыхатель, друзья моих прямых друзей, третий уровень не нужен.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2016, 09:03 |
|
||
|
Все связи с одной таблице
|
|||
|---|---|---|---|
|
#18+
Громыхателья не вижу где в ваших данных связь с 3. Такой цифры вообще нет в колонке dst Вероятно, должно быть не src-dst, а friend1-friend2, т.е. связь ненаправленная. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2016, 09:07 |
|
||
|
Все связи с одной таблице
|
|||
|---|---|---|---|
|
#18+
а, т.е. связь двунаправленная и искать нужно и по dst тоже. Тогда так: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2016, 09:25 |
|
||
|
Все связи с одной таблице
|
|||
|---|---|---|---|
|
#18+
Если формализовать задачу - то речь идёт о поиске всех путей в ненаправленном невзвешенном графе. Алгоритмов - ну просто завались... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2016, 09:33 |
|
||
|
Все связи с одной таблице
|
|||
|---|---|---|---|
|
#18+
Akina, Ну вот теперь ясен вектор поиска, а то с утра сквозняк в голове. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2016, 10:04 |
|
||
|
Все связи с одной таблице
|
|||
|---|---|---|---|
|
#18+
ShadowMaster63 , поройся по форуму - я где-то постил код волнового алгоритма на SQL. Его не так уж и сложно адаптировать под твою задачу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2016, 10:12 |
|
||
|
Все связи с одной таблице
|
|||
|---|---|---|---|
|
#18+
ShadowMaster63Ты про это ? Это немного не то, но подход тот же. Ок, выложу тут. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2016, 10:36 |
|
||
|
Все связи с одной таблице
|
|||
|---|---|---|---|
|
#18+
Akina, Ух, круто. правда с моими ограничениями на работу с БД, придется все таки на клиентской стороне делать. Спасибо! Код в копилку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2016, 10:43 |
|
||
|
Все связи с одной таблице
|
|||
|---|---|---|---|
|
#18+
ShadowMaster63с моими ограничениями на работу с БД, придется все таки на клиентской стороне делать.Так и задача исходная явно для выполнения на клиенте. От сервера только получаешь исходные данные для расчёта. Возможно, слегка их нормализовав (скажем, чтобы src<dst) и отсортировав - это немного упростит реализацию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2016, 10:49 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=39192903&tid=1832058]: |
0ms |
get settings: |
6ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
137ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
32ms |
get tp. blocked users: |
1ms |
| others: | 236ms |
| total: | 435ms |

| 0 / 0 |
