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 Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
SunChase
Отправлено: 14 Сентября, 2011 - 18:06:24
Post Id



Гость


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


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




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

Нужна ваша помощь по такому вопросу. Создал таблицу faculty, в которой хочу разместить элементы в иерархическом порядке, для чего использую нумерацию типа 1.1.1...

Отсюда появилась задачка отобрать главенствующие элементы, тоесть те, с которых всё начинается. Можно ли както в самом запросе "уточнить" наличие в определённом поле(назовём его field_path) спец. символов(обыкновенной точки в данном случае ?

И сразу по ходу вопрос. Есть ли функция MySql, позволяющая производить подсчёт к-ва указанных элементов в поле при отборе?

Заранее благодарен.
 
 Top
DeepVarvar Супермодератор
Отправлено: 14 Сентября, 2011 - 18:26:50
Post Id



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


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


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




Ощущение что вы с файлов сразу так пересели на мускуль
SunChase пишет:
Есть ли функция MySql, позволяющая производить подсчёт
Да конечно: COUNT(field)
SunChase пишет:
использую нумерацию типа 1.1.1...
Лучше два поля: id и parent_id
 
 Top
SunChase
Отправлено: 14 Сентября, 2011 - 19:02:22
Post Id



Гость


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


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




Ну я понимаю что так проще. Но дело в том, что мне нужно будет делать отбор и элементов 2,3 уровня. В теории, Я планировал выделять их с помощью подсчёта спец.символов в строке(к-во точек якобы).

Тоись:

0 точек - заглавные элементы
1 точка - прилежащие к заглавным элементы

и т.д.

(Отредактировано автором: 14 Сентября, 2011 - 19:04:03)

 
 Top
LIME
Отправлено: 14 Сентября, 2011 - 19:48:18
Post Id


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


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


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




а не нельзя сделать для каждого уровня вложения свою таблицу?
с полем парент_ид для каждой записи в дочерней таблице
 
 Top
DeepVarvar Супермодератор
Отправлено: 14 Сентября, 2011 - 20:52:41
Post Id



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


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


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




LIME пишет:
для каждого уровня вложения свою таблицу
не рационально
(Добавление)
SunChase пишет:
0 точек - заглавные элементы
1 точка - прилежащие к заглавным элементы
Это называется layer - уровень (глубина вложенности)
Если он вам будет нужен, просто добавьте это поле к двум описанным мной выше:
id, parent_id, layer
Нулевой уровень это вложенность в корень и т.д 1,2,3...
 
 Top
SunChase
Отправлено: 14 Сентября, 2011 - 21:03:26
Post Id



Гость


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


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




Нехочу ограничивать. На данном этапе задумки у меня будет 3 уровня, что в предложенном варианте уже ровно 3м таблицам, набор элементов которых по сути выходит идентичным. Но если в будущем возникнет потребность "уточнения" уровней, придётся клепать отдельную таблицу(ы). Несчитаю это разумным.

Продумывал вариант отбора уже в самом цикле, но в каждом элементе таблицы содержится поле с большим объёмом текста, что, как показали опыты, "утяжеляет" запрос. А у меня стоит задача сделать по возможности нагрузку по минимуму.
 
 Top
LIME
Отправлено: 14 Сентября, 2011 - 21:04:11
Post Id


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


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


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




DeepVarvar пишет:
не рационально
я понял что выборка будет происходить по уровням...без джойна
тогда рационально будет?
(Добавление)
SunChase пишет:
набор элементов которых по сути выходит идентичным
кажется вы неверно поняли
 
 Top
SunChase
Отправлено: 14 Сентября, 2011 - 22:55:00
Post Id



Гость


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


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




Цитата:
я понял что выборка будет происходить по уровням...без джойна
тогда рационально будет?


Выборка должна отбирать элементы определённого уровня, основываясь на поле, в котором указан "путь" элемента - 1.1 к примеру, или же просто 1.

Цитата:
кажется вы неверно поняли

Насколько я понял ваше предложение, то предлагается для каждого уровня элементов использовать новую таблицу с указанием на первичную таблицу с parent_id. Суть задачи, которую Я решил сделать, заключается в том, что все элементы имеют идентичный набор полей. Из-за этого я считаю слегка нерациональным использовать данную методу.

Как вариант, я могу написать функцию в РНР, выгребающую только нужные мне айдишники в зависимости от поставленных условий, чтобы использовать её результаты для нынешнего запроса. Но как я упоминал раньше - Я хочу попытаться обойтись по минимуму к загрузке системы("нагрузить её" Я так чую ещё представится возможность)
 
 Top
DeepVarvar Супермодератор
Отправлено: 14 Сентября, 2011 - 23:20:25
Post Id



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


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


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




SunChase пишет:
Я хочу попытаться обойтись по минимуму
Ну так и прислушайтесь к нашим доводам..
 
 Top
SunChase
Отправлено: 15 Сентября, 2011 - 00:35:59
Post Id



Гость


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


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




DeepVarvar пишет:
Ну так и прислушайтесь к нашим доводам..


Цитата:
сделать для каждого уровня вложения свою таблицу

Цитата:
Если он вам будет нужен, просто добавьте это поле к двум описанным мной выше:
id, parent_id, layer

к этому?
 
 Top
DeepVarvar Супермодератор
Отправлено: 15 Сентября, 2011 - 06:59:03
Post Id



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


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


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




Предположим вы в админке будете добавлять/удалять документы каждый день.
Что же - с каждым уровнем создавать удалять таблицы?
А если надо будет перенести документ из одного уровня вложенности в другой?
По мне так вообще уровни не нужны.
Но если будут нужны я просто заведу еще одно поле layer.
 
 Top
LIME
Отправлено: 15 Сентября, 2011 - 08:22:16
Post Id


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


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


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




.

(Отредактировано автором: 15 Сентября, 2011 - 08:24:15)

 
 Top
SunChase
Отправлено: 15 Сентября, 2011 - 16:09:59
Post Id



Гость


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


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




таксь. Понятно. Решил задачку доп. запросом, где уже через PHP функции формируются необходимые айдишники. Но всёравно спасибо за то что отозвались на просьбу помощи
 
 Top
Stierus Супермодератор
Отправлено: 15 Сентября, 2011 - 16:14:36
Post Id



Рекордсмен по количеству сообщений за 7 дней


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


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




Если брать вашу задачу в лоб - используйте Like, если делать нормально - введите еще один столбец "level", в котором будет храниться уровень вложености 1, 2, 3 и тд ...
 
My status
 Top
DeepVarvar Супермодератор
Отправлено: 15 Сентября, 2011 - 16:50:50
Post Id



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


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


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




Stierus пишет:
еще один столбец "level"
та я об этом говорил выше
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Работа с СУБД »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB