Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Запрос одной строкой MySQL, Как это решить одной строкой
 
 автор: aurumkey   (22.09.2008 в 02:11)   письмо автору
 
 

Имеется таблица:

id_main, id_parent, name 
1, 0, О компании 
2, 1, Новости 
3, 1, История
4, 0,  Партнеры
5, 1, Персонал 
6, 0, Вакансии


как вывести (запрос одной строкой MySQL) в таком виде

О компании|3
Партнеры|0
Вакансии|0

т.е. Названия основных разделов и кол-во подразделов в них ("Новости" это подраздел в "О компании")

  Ответить  
 
 автор: Trianon   (22.09.2008 в 09:24)   письмо автору
 
   для: aurumkey   (22.09.2008 в 02:11)
 

Если дерево с неограниченной вложенностью (а такая структура это подразумевает), то одним запросом - никак.

  Ответить  
 
 автор: ols   (22.09.2008 в 14:32)   письмо автору
 
   для: aurumkey   (22.09.2008 в 02:11)
 

У меня была схожая ситуация, и при выводе кол-во подразделов использовал mysql_num_rows правда это не самый хороший вариант, если в базе очень много данных.

  Ответить  
 
 автор: xx77   (22.09.2008 в 15:54)   письмо автору
 
   для: aurumkey   (22.09.2008 в 02:11)
 

говорят можно в одну таблицу впихнуть строго разграниченые списки
поставив auto_increment не на первичный ключ.
типа
CREATE TABLE examplm (
  id_parent VARCHAR(12) NOT NULL,
  id_main int(11) NOT NULL auto_increment,
  name VARCHAR(255) NOT NULL,
  PRIMARY KEY (id_parent, id_main)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;    
 
INSERT INTO examplm VALUES(
'1_', NULL, 'О компании'  ),
 ('1_', NULL, 'Новости'  ),
 ('1_', NULL, 'История' ), 
('2_', NULL,  'Партнеры' ),
 ('2_', NULL, 'Персонал'  ),
 ('3_', NULL, 'Вакансии');

# приходится постоянно применять CONCAT

SELECT * FROM examplm WHERE CONCAT(id_parent, id_main) = '1_1';

#а плюс со строками не всегда работает как нужно иногда

SELECT * FROM examplm WHERE id_parent = 1+'_';

#DROP TABLE examplm;

но или я не знаю как правильно с таким обращаться , или оно просто такое неудобное получается )

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования