Forum Webscript.Ru

Общие => Базы данных => Тема начата: it4all от 06 Февраля 2004, 11:34:25

Название: Проблемы с написанием запроса для вывода первой страницы форума
Отправлено: it4all от 06 Февраля 2004, 11:34:25
Про трату времени,целиком и полностью!!!
Вот структура моих таблиц -
`categories` (
`cat_id` MEDIUMINT( 8 ) UNSIGNED NOT NULL AUTO_INCREMENT ,
`cat_title` VARCHAR( 100 ) NOT NULL ,
PRIMARY KEY ( `cat_id` )
);

`forums` (
`forum_id` MEDIUMINT( 8 ) UNSIGNED NOT NULL AUTO_INCREMENT ,
`cat_id` MEDIUMINT( 8 ) UNSIGNED NOT NULL ,
`forum_title` VARCHAR( 100 ) NOT NULL ,
`forum_description` VARCHAR( 100 ) NOT NULL ,
PRIMARY KEY ( `forum_id` )
);

`topics` (
`topic_id` MEDIUMINT( 8 ) UNSIGNED NOT NULL ,
`forum_id` MEDIUMINT( 8 ) UNSIGNED NOT NULL ,
`topic_title` VARCHAR( 100 ) NOT NULL ,    
PRIMARY KEY ( `topic_id` )
);

`posts` (
`post_id` MEDIUMINT( 8 ) UNSIGNED NOT NULL AUTO_INCREMENT ,
`topic_id` MEDIUMINT( 8 ) UNSIGNED NOT NULL ,
`post_time` INT( 11 ) NOT NULL ,  
`user_id` CHAR( 20 ) NOT NULL ,
`post_text` TEXT NOT NULL ,
PRIMARY KEY ( `post_id` )
);

`users` (
`user_id` CHAR( 20 ) NOT NULL ,
`user_name` VARCHAR( 40 ) NOT NULL ,
`user_pass` VARCHAR( 40 ) NOT NULL ,
`user_email` VARCHAR( 40 ) NOT NULL ,
`user_url` VARCHAR( 40 ) ,
`user_city` VARCHAR( 40 ) ,
`user_status` VARCHAR( 40 ) ,
`user_sid` CHAR( 32 ) NOT NULL ,
PRIMARY KEY ( `user_id` )
);

Нужен вывод-
Название форума[forum_title](его описание[forum_description]) | Количество тем | сообщений | последнее сообщение

Больше примеров запросов просить не буду.
Название: Проблемы с написанием запроса для вывода первой страницы форума
Отправлено: it4all от 09 Февраля 2004, 13:29:00
Запрос хреновый.Не кажет как надо
Помогите найти ошибку-
Если делаю так -
SELECT *,COUNT(t.topic_id) AS tid FROM forums f
LEFT JOIN topics t ON f.forum_id = t.forum_id WHERE f.cat_id=\'$line[cat_id]\' GROUP BY f.forum_id
то tid выдает правильно,но если присоединить таблицу постов -
SELECT *,COUNT(t.topic_id) AS tid,COUNT(p.post_id) AS pid,MAX(p.post_time) AS ptime FROM forums f
LEFT JOIN topics t ON f.forum_id = t.forum_id
LEFT JOIN posts p ON p.topic_id = t.topic_id WHERE f.cat_id=\'$line[cat_id]\' GROUP BY f.forum_id
то tid и pid оказываются равными
Название: Проблемы с написанием запроса для вывода первой страницы форума
Отправлено: it4all от 09 Февраля 2004, 15:17:30
Суперско переехали!
КПД от переезда на данный момент времени - 0
Название: Проблемы с написанием запроса для вывода первой страницы форума
Отправлено: Меняздесьдавнонет от 09 Февраля 2004, 15:39:11
быдешь ворчать - нулем и останется.
Название: Проблемы с написанием запроса для вывода первой страницы форума
Отправлено: it4all от 12 Февраля 2004, 20:19:44
RomikChef - ты либо каркнул,либо данный форум непосещаем,либо все грамотеи шибко занятые
Название: Проблемы с написанием запроса для вывода первой страницы форума
Отправлено: Макс от 12 Февраля 2004, 21:52:20
it4all
а зачем в твоем запросе
Цитировать
it4all:
COUNT(t.topic_id) AS tid

1. тебе здесь никто не обязан отвечать
2. попробуй COUNT(DISTINCT t.topic_id) AS tid
Название: Проблемы с написанием запроса для вывода первой страницы форума
Отправлено: it4all от 13 Февраля 2004, 20:58:15
Макс Спасибо помогло
Название: Проблемы с написанием запроса для вывода первой страницы форума
Отправлено: it4all от 11 Марта 2004, 22:10:25
"SELECT t.topic_id,t.topic_title,p.post_id,p.post_time,
MAX(p.post_time) AS pt,p.post_text,COUNT(p.post_id) AS pid,u.user_name
FROM topics t
LEFT JOIN posts p ON p.topic_id=t.topic_id
LEFT JOIN users u ON u.user_id=p.user_id
WHERE t.forum_id=\'$_GET[f]\' GROUP BY t.topic_id";

Господа подскажите пожалуста, как  к этому запросу подцепить имя(u.user_name) пославшего последнее сообщение.
И если есть у кого ссылка,где грамотно обьясняют, как делать сложные запросы , подскажите ,буду премного благодарен