Автор Тема: Проблемы с написанием запроса для вывода первой страницы форума  (Прочитано 4483 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн it4all

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 68
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.it4all.h10.ru
Про трату времени,целиком и полностью!!!
Вот структура моих таблиц -
`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

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 68
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.it4all.h10.ru
Запрос хреновый.Не кажет как надо
Помогите найти ошибку-
Если делаю так -
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

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 68
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.it4all.h10.ru
Суперско переехали!
КПД от переезда на данный момент времени - 0

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
быдешь ворчать - нулем и останется.

Оффлайн it4all

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 68
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.it4all.h10.ru
RomikChef - ты либо каркнул,либо данный форум непосещаем,либо все грамотеи шибко занятые

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
it4all
а зачем в твоем запросе
Цитировать
it4all:
COUNT(t.topic_id) AS tid

1. тебе здесь никто не обязан отвечать
2. попробуй COUNT(DISTINCT t.topic_id) AS tid
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн it4all

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 68
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.it4all.h10.ru
Макс Спасибо помогло

Оффлайн it4all

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 68
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.it4all.h10.ru
"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) пославшего последнее сообщение.
И если есть у кого ссылка,где грамотно обьясняют, как делать сложные запросы , подскажите ,буду премного благодарен

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28