Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Цепочка значений

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: можно ли одним запросом обойтись?
nextdrift
Отправлено: 27 Ноября, 2010 - 08:00:24
Post Id


Гость


Покинул форум
Сообщений всего: 97
Дата рег-ции: Авг. 2010  


Помог: 0 раз(а)




Доброго времени суток.

Есть таблица связей
id_a| id_b
------------
1 | 4
4 | 6
5 | 7
6 | 8
8 | 15

нужно получить цепочку:
8-15, 6-8, 4-6, 1-4. Т.е. выбрать все звёна, которые взаимосвязаны, а затем вывести список в обратном порядке (по возрастанию).
 
 Top
DeepVarvar Супермодератор
Отправлено: 27 Ноября, 2010 - 08:18:34
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Хм... Очень похоже на постраничный вывод, только "с другого ракурса" типа лимитов.. Однако не совсем понятен конечный результат. Не пойти ли от обратного не выводя то что не взаимосвязано?
 
 Top
nextdrift
Отправлено: 27 Ноября, 2010 - 12:19:47
Post Id


Гость


Покинул форум
Сообщений всего: 97
Дата рег-ции: Авг. 2010  


Помог: 0 раз(а)




Вариант может быть следующий:
id_a| id_b
------------
1 | 4
4 | 6
5 | 7
6 | 9
6 | 25
6 | 8
8 | 15


6 | 9
6 | 25
эти не должны попасть в массив. Поэтому я хочу делать в обратном поядке

Или это делается путём работы на стороне PHP ?
Но таких записей может быть около 5к ~ 10к (а может больше)

(Отредактировано автором: 27 Ноября, 2010 - 12:23:32)

 
 Top
JustUserR
Отправлено: 27 Ноября, 2010 - 13:05:44
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




nextdrift пишет:
Или это делается путём работы на стороне PHP ?
Но таких записей может быть около 5к ~ 10к (а может больше
Осуществление решения приведнной вами задачи по построению списка последовательных элементов на основе информационной полей предоставляющих их уникальные поля в сторону генерации - в действительности необходимо проводить на стороне сервера баз данных при причине возможности прямого доступа к информационным полям и применения внутренних механихмов индексации в таблицах Тем не менее фактическое решение может быть достигнуто посредством использования пользовательских SQL-функций - по причине неопределенности обобщенного уровня вложенности линейных запросов


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
nextdrift
Отправлено: 27 Ноября, 2010 - 15:27:01
Post Id


Гость


Покинул форум
Сообщений всего: 97
Дата рег-ции: Авг. 2010  


Помог: 0 раз(а)




JustUserR пишет:
Осуществление решения приведнной вами задачи по построению списка последовательных элементов на основе информационной полей предоставляющих их уникальные поля в сторону генерации - в действительности необходимо проводить на стороне сервера баз данных при причине возможности прямого доступа к информационным полям и применения внутренних механихмов индексации в таблицах Тем не менее фактическое решение может быть достигнуто посредством использования пользовательских SQL-функций - по причине неопределенности обобщенного уровня вложенности линейных запросов


Ппц... Не понял
Можно по-русски ? Радость
А то я не на столько ещё силён
 
 Top
ALEN
Отправлено: 27 Ноября, 2010 - 17:08:00
Post Id



Участник


Покинул форум
Сообщений всего: 1459
Дата рег-ции: Авг. 2008  
Откуда: Крым


Помог: 11 раз(а)




nextdrift
Он по русски, не пугайтесь, там просто много БУКАВ.
JUR просто не любит писать коротко,а так там все по сути и просто.

P.S. JUR - свои посты в сателит постранично выводи и будет много ДЕНЯГ с сапы)))
 
 Top
dc93
Отправлено: 27 Ноября, 2010 - 22:40:55
Post Id


Новичок


Покинул форум
Сообщений всего: 21
Дата рег-ции: Нояб. 2010  


Помог: 0 раз(а)




nextdrift
CODE (htmlphp):
скопировать код в буфер обмена
  1. select a.id_a, a.id_b from table a
  2. where
  3. exists (select 1 from table b where a.id_a = b.id_b)
  4. order by 1 desc

(Отредактировано автором: 27 Ноября, 2010 - 22:44:53)

 
 Top
nextdrift
Отправлено: 28 Ноября, 2010 - 20:29:04
Post Id


Гость


Покинул форум
Сообщений всего: 97
Дата рег-ции: Авг. 2010  


Помог: 0 раз(а)




спасибо. Буду пробовать
 
 Top
dc93
Отправлено: 28 Ноября, 2010 - 20:48:17
Post Id


Новичок


Покинул форум
Сообщений всего: 21
Дата рег-ции: Нояб. 2010  


Помог: 0 раз(а)




nextdrift пишет:
спасибо. Буду пробовать


если это надо представить в виде строки, то, для MySQL есть агрегирующая функция (кажется так называется) GROUP_CONCAT (только там по умолчанию стоит ограничение в 1024 символа), для MSSQL можно попробовать извратиться через CTE, у Oracle тоже вроде нечто подобное попадалось,
а в общем случае через курсор ляпить
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB