Форумы xBB

Форумы xBB > Вебразработка

Вопрос по MySQL и SQL

Автор: Nutty. Последнее редактирование: 2011-05-23 10:49:30

Возможно сделать запрос такова типа.
У нас есть таблицы forums, forum_threads, forum_posts, и users.
суть нужно сделать запрос в таблицу forums с выборкой ячеек forum_id, forum_access далее выбрать из таблицы forum_threads ячейки thread_id, thread_subject, thread_lastuser, thread_lastpost где forum_id равен forum_id из таблицы forums c сортировкой thread_lastpost по DESC и лимитом 1
далее выбрать из таблицы forum_posts выбрать ячейку post_id где thread_id равен thread_id из таблицы forum_threads и сортировкой post_datestamp по DESC с так же с лимитом 1
и из таблицы users выбрать ячейку user_name где user_id равен thread_lastuser из таблицы forum_threads
При этом всём общий лимит должен быть 10.
 
Суть чтобы из базы MySQL получить массив такой структуры
PHP

array(
   0 =>array(
     'forum_id'=>'ID форума',
     'forum_access'=>'Кому виден форум',
     'thread_id'=>'ID последней обновлённой темы',
     'thread_subject'=>'Название темы',
     'thread_lastuser'=>'посл. раз кто изменил тему',
     'thread_lastpost'=>'время мзменения',
     'post_id'=>'Ид последнего поста',
     'user_name'=>'Имя пользователя последнего поста')
и ит до 9.
)
 
К оператору JOIN не нашел способов приделать оператор LIMIT Not so как по другому сделать даже не предполагаю кому несложно помогите пожалуйста.

29 комментариев

28.09.2013 08:26:01 #
Mozilla Firefox dima
Воспользуйтесь функцией COUNT(*) и группировкой GROUP BY.
28.09.2013 12:16:44 #
Mozilla Firefox victor
Пробовал. Именно ими и пробовал.
Но постоянно ошибки выдаёт.
Попробую ещё.
28.09.2013 12:37:31 #
Mozilla Firefox victor
Ну вот, например, такой код. Представление создаётся, но подсчитывает количество людей неверно.
create view v2 (daysofreg, countpeople) as select distinct extract (day from dateofreg), count (*) from xbbuz group by (extract (day from dateofreg), dateofreg);
29.09.2013 00:17:15 #
Mozilla Firefox dima
Попробуйте так:
SQL
SELECT EXTRACT(DAY FROM dateofreg), COUNT(*)
FROM xbbuz
GROUP BY dateofreg;

Заметьте, я не написал DISTINCT, потому что это, по сути, GROUP BY по выбираемым полям. И убрал EXTRACT(DAY FROM dateofreg) из GROUP BY, так как dateofreg достаточно.
29.09.2013 02:42:58 #
Mozilla Firefox victor
Вот результат:

Сервер не просуммировал людей.
(create view v2 (daysofreg, countpeople) as я оставил из своего запроса)
29.09.2013 03:10:47 #
Mozilla Firefox victor
Во! Вот он код!
create view v3 (daysofreg, countpeople) as SELECT EXTRACT(DAY FROM dateofreg), COUNT(*)FROM xbbuz group by (EXTRACT(DAY FROM dateofreg));
29.09.2013 03:12:33 #
Mozilla Firefox victor
dima, большое спасибо Вам за подсказки!Gift
29.09.2013 05:20:56 #
Mozilla Firefox dima
Пожалуйста Well
10.12.2019 20:38:22 #
Google Chrome Гость mamakoleso
Поставь свою удачу на кон - cazino-vulcan-slot.net - казино, слоты, рулетка, все для твоего выбора

Ответить:

Представиться как     Антибот:
   

Просьба не постить мусор. Пользуйтесь кнопкой предварительного просмотра на панели инструментов редактора.

Введите логин: и пароль: (

© 2007-2020, Дмитрий Скоробогатов.
Разрешается воспроизводить, распространять и/или изменять материалы сайта
в соответствии с условиями GNU Free Documentation License,
версии 1.2 или любой более поздней версии, опубликованной FSF,
если только иное не указано в самих материалах.