Вопросы по составлению запросов

iSlayter

Новичок
Вопросы по составлению запросов

Есть 4 таблицы.
Таблица с новостями:
CREATE TABLE `cms_content` (
`title` text NOT NULL,
`subtitle` text NOT NULL,
`text` text NOT NULL,
`id` int(11) NOT NULL auto_increment,
`date` int(10) NOT NULL default '0',
`views` int(11) NOT NULL default '0',
`author` int(2) NOT NULL default '0',
`type` int(1) NOT NULL default '1',
`pub` int(1) NOT NULL default '0',
`mdesc` varchar(150) NOT NULL default '',
`mwords` varchar(250) NOT NULL default '',
`nSticky` int(1) NOT NULL default '0',
`nNumber` int(8) NOT NULL default '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=0 ;


Таблица с комментариями:
где nid - номер новости
CREATE TABLE `cms_comments` (
`id` int(11) NOT NULL auto_increment,
`nid` int(11) NOT NULL default '0',
`userid` int(8) NOT NULL default '0',
`nick` text
`comment` text NOT NULL,
`date` int(15) NOT NULL default '0',
`mail` varchar(255) NOT NULL default '',
`icq` int(15) NOT NULL default '0',
`url` varchar(100) NOT NULL default '',
`posterip` varchar(16) NOT NULL default '',
`registered` int(1) NOT NULL default '0',
`comapproved` int(1) NOT NULL default '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=0 ;

Таблица в которой хранятся номера категорий для новостей:
где contentId - номер новости. contentCatNum - номер категории.
CREATE TABLE `cms_content_categories` (
`contentCatId` int(3) NOT NULL auto_increment,
`contentId` int(11) NOT NULL default '0',
`contentCatNum` int(3) NOT NULL default '0',
PRIMARY KEY (`contentCatId`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=0 ;

Таблица с самими категориями:
CREATE TABLE `cms_sections` (
`section_id` bigint(20) NOT NULL default '0',
`section_left` bigint(20) NOT NULL default '0',
`section_right` bigint(20) NOT NULL default '0',
`section_level` int(11) default NULL,
`section_name` varchar(255) NOT NULL default '',
PRIMARY KEY (`section_id`),
UNIQUE KEY `section_id` (`section_id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;

Вопрос - как составить запрос так, чтобы получить информацию о новости, о всех категориях к которым она относится + количество комментариев к этой новости?

Union не подходит, через JOIN нельзя(?) присоединить COUNT по полю одной таблицы, совпадающего с ключем из другой. Использовать вложенные запросы тоже нельзя, нужно чтобы работало на 4.х.

Каким образом?
Подскажите пожалуйста! Это архиважно, поскольку не хочется как и прежде хранить поле с кол-ом комментариев к новости в самой записи с новостью и при добавлении\удалении комментария к этой новости повышать\понижать его значения.
Аналогично и с категориями, до переделки структуры новость могла относиться только к одной.
ПОЖАЛУЙСТА, ПОМОГИТЕ!
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
Какой цикл?

1. Запрос на выборку новотей - пишете в массив айдишки новостей. Ничего не выводите, пишете результ в массив

Остальные запросы по условию полученных Ай-Ди из п.1

-~{}~ 05.06.07 21:55:

После получения всех данных выводите
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
iSlayter
Выбирайте нужные.
Запросы Вам никто писать не будет.
 

iSlayter

Новичок
каким оператором выбирать? JOIN подойдет в одном случае, но не подойдет при подсчете комментариев.
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
iSlayter

1. Запрос на выборку новостей
while($data = mysql_fetch){
$news[] = $data;
$news_id[] = $data['news_id']
}
2. Выборка коментариев по условию nid=$news_id
+COUNT + GROUP BY

Всё остальное в том-же стиле.

Вывод $news
 
Сверху