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

Форум MySQL

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

 

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

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

тема: Категории. Выбор из нескольких таблиц
 
 автор: Artem S.   (17.11.2005 в 10:46)   письмо автору
 
 

Струкрура таблиц


CREATE TABLE 'base' (
  'id' mediumint(8) NOT NULL auto_increment,
  'hostname' varchar(64) NOT NULL default '',
  'idspider' mediumint(6) NOT NULL default '0',
  PRIMARY KEY  ('id'),
  UNIQUE KEY 'Hostname' ('hostname')
) TYPE=MyISAM;

CREATE TABLE 'spider' (
  'id' mediumint(8) NOT NULL auto_increment,
  'parent' mediumint(8) default NULL,
  PRIMARY KEY  ('id')
) TYPE=MyISAM;


В spider.parent хранится id катигории. Если null то это запись из конря, если 1 то все записи входят в первую запись (в этой же таблице)

Записи выбираются так

SELECT sp.*, COUNT(bt.'id') as counter
FROM ". _SPIDER_TABLE ." sp
LEFT JOIN ". _BASE_TABLE ." bt
         ON bt.'idspider' = sp.'id'
WHERE sp.'parent' = $id OR sp.'id' = $id
GROUP BY sp.'id';

т.е. counter это кол-во записей собранных этим пауком. А как добавить в это кол-во и те, что собраны его "потомками" (где spider.parent = $id)

   
 
 автор: cheops   (17.11.2005 в 13:31)   письмо автору
 
   для: Artem S.   (17.11.2005 в 10:46)
 

Одним запросом пожалуй что никак... здесь необходимо рекурсивную функцию которая будет спускаться по $id вниз.

   
 
 автор: Artem S.   (17.11.2005 в 21:25)   письмо автору
 
   для: cheops   (17.11.2005 в 13:31)
 

Получилось! сам даже не ожидал.

SELECT sp.*, COUNT(DISTINCT bt.'id') as counter, COUNT(DISTINCT bt2.'id') as counter2
FROM robot_spider sp
LEFT JOIN robot_spider sp2
ON sp2.'parent' = sp.'id'
LEFT JOIN guest_base bt
ON bt.'idspider' = sp.'id'
LEFT JOIN guest_base bt2
ON bt2.'idspider' = sp2.'id'
WHERE sp.'parent' = $id OR sp.'id' = $id
GROUP BY sp.'id';

   
Rambler's Top100
вверх

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