вопрос по оптимизации СуБД

Статус
В этой теме нельзя размещать новые ответы.

CrashX

В прошлом XSiteCMS
Регистрация
6 Июн 2008
Сообщения
681
Реакции
114
есть таблицы которые во вложении.
помогите составить 2 запроса.
1.нужно вывести из каждой категории вывести по 5 новостей с указанием количества комментариев, и их авторов
2.потом для одной новости имея только id новости вывести новость, узнать категорию и 10 последних коментариями к ней, а так же их авторов


и теперь вопрос будет ли целесобрано создать еще одну таблицу прав доступа к разделу она приблизительно будет следующего вида
id - ключ, автоинктемент
gid - группа пользователей (группы прописаны статически)
task - тип действия (edit\read\save\del\null и тп)
 

Вложения

  • news.jpg
    news.jpg
    51,8 KB · Просмотры: 33
есть таблицы которые во вложении.
1.нужно вывести из каждой категории вывести по 5 новостей с указанием количества комментариев, и их авторов
2.потом для одной новости имея только id новости вывести новость, узнать категорию и 10 последних коментариями к ней, а так же их авторов
и теперь вопрос будет ли целесобрано создать еще одну таблицу прав доступа к разделу она приблизительно будет следующего вида
id - ключ, автоинктемент
gid - группа пользователей (группы прописаны статически)
task - тип действия (edit\read\save\del\null и тп)

а каким боком задачи из 1. и 2. связаны с таблицей прав для групп? Если редактировать права через web-интерфейс нужно - имеет смысл создавать, если для "статических" групп права тоже "статические", то смысла в дополнительных обращениях в базу нет
 
я пока просил помоши в составлении запросов,
а второе пока никак не всязано, тк у меня групп пользователей может быть неограничено ни чем, и у каждой из них есть права на доступ к операциям. механизм доступа уже отработан. было бы целесобзано в кажом модуле создавать таблицу с правами или вынести все это в отдельную таблицу
 
К вопросу #2
имея только id новости (например 4) вывести новость
PHP:
$newsId = 4;
$query = mysql_query("SELECT * FROM errors WHERE id = ".$newsId);
$newsContent = mysql_fetch_assoc($query);
foreach($newsContent as $key => $value)
	echo $key." - ".$value."<br />";
узнать категорию можно будет из $newsContent['cid'].
Последние 10 комментариев можно выбрать запросом
PHP:
$query=mysql_query("SELECT
comm.*,
usr.usurname AS 'authorName'
FROM news_comment AS comm
LEFT JOIN users AS usr
ON usr.id = comm.author
WHERE comm.nid = ".$newsId."
ORDER BY comm.id DESC LIMIT 0,10");
Делать это в одном запросе наверное не стОит, т.к.значительно увеличится результат, возвращаемый mySQL.

UPD
По первому вопросу как-то до конца вкурить не могу. Вот получение последних 5 новостей, авторов новостей и количества коментариев, НО по заданой категории.
Код:
SELECT news.*,
usr.usurname AS 'authorName',
(SELECT count(nid) FROM news_comment WHERE nid = news.id) as 'replies'
FROM news
LEFT OUTER JOIN users AS usr
ON usr.id = news.author
WHERE news.cid = 1
ORDER BY news.id DESC LIMIT 0, 5
Как сделать выборку и категорий и пяти последних новостей одним запросом не знаю. и этот код как подзапрос использовать наверное тоже не выйдет, "WHERE news.cid =" на сможет получить параметр из внешнего запроса.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху