iSlayter
Новичок
Вопросы по составлению запросов
Есть 4 таблицы.
Таблица с новостями:
Таблица с комментариями:
где nid - номер новости
Таблица в которой хранятся номера категорий для новостей:
где contentId - номер новости. contentCatNum - номер категории.
Таблица с самими категориями:
Вопрос - как составить запрос так, чтобы получить информацию о новости, о всех категориях к которым она относится + количество комментариев к этой новости?
Union не подходит, через JOIN нельзя(?) присоединить COUNT по полю одной таблицы, совпадающего с ключем из другой. Использовать вложенные запросы тоже нельзя, нужно чтобы работало на 4.х.
Каким образом?
Подскажите пожалуйста! Это архиважно, поскольку не хочется как и прежде хранить поле с кол-ом комментариев к новости в самой записи с новостью и при добавлении\удалении комментария к этой новости повышать\понижать его значения.
Аналогично и с категориями, до переделки структуры новость могла относиться только к одной.
ПОЖАЛУЙСТА, ПОМОГИТЕ!
Есть 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.х.
Каким образом?
Подскажите пожалуйста! Это архиважно, поскольку не хочется как и прежде хранить поле с кол-ом комментариев к новости в самой записи с новостью и при добавлении\удалении комментария к этой новости повышать\понижать его значения.
Аналогично и с категориями, до переделки структуры новость могла относиться только к одной.
ПОЖАЛУЙСТА, ПОМОГИТЕ!