Собрать сложный MySql запрос

Разработка своих веб-приложений и страничек

Собрать сложный MySql запрос

Сообщение Zver » 23 фев 2010, 22:53

Опять вопрос по сложному MySql запросу.
И так, имеется MySql запрос вида:

Код: Выделить всёРазвернуть
$sql  = "SELECT forums.id          AS forumID,
                forums.title       AS forumTitle,
                forums.description AS forumDesc,
                forums.moders,
                forums.section_id,
                forums.parent_forum,
                forums.icon,
                forums_themes.id      AS themeID,
                forums_themes.title   AS themeTitle,
                forums_themes.date    AS themeDate,
                forums_themes.author,
                forums_themes.closed,
                forums_themes.forum_id,
                forums_sections.id     AS secID,
                forums_sections.title  AS secTitle,
                users.id               AS authorID,
                users.username         AS authorUsername,
                (SELECT count(*) FROM forums_posts WHERE forums_posts.forum_id = forums.id) AS postsCount,
                (SELECT count(views) FROM forums_themes WHERE forums_posts.forum_id = forums.id) AS viewsCount
         FROM forums
         LEFT JOIN forums_posts ON forums_posts.forum_id = forums.id
         LEFT JOIN forums_themes ON forums_themes.forum_id = forums.id
         LEFT JOIN forums_sections ON forums_sections.id = forums.section_id
         LEFT JOIN users ON users.id = forums_themes.author
         ORDER BY forums_themes.id DESC LIMIT ".$all[0];



Запрос возвращает Заголовок темы, Автора, ID Автора, Кол-во ответов, просмотров, но вот как вырвать из него дату последнего сообщения, и автора этого сообщения? Пытался и вложенными запросами, и LEFT JOIN'ами, но результата та и не добился. :(

Есть предложения?
ЗЫ: Мучаюсь уже второй день, безрезультатно :cry:
ЗЫЫ: Знатоки, хде вы?)
Zver
Активный участник
 
Сообщения: 1333
Зарегистрирован: 18 дек 2008, 18:51
Откуда: Саратов, Заводской

Re: Собрать сложный MySql запрос

Сообщение Conteo » 23 фев 2010, 23:11

Если до завтра никто не поможет- то помогу. Сейчас не в состоянии.
Изображение
Пользователи федоры - как тараканы. Слабые духом и нервами давно вымерли, а оставшихся в живых уже ничем не взять.
Аватара пользователя
Conteo
Активный участник
 
Сообщения: 1813
Зарегистрирован: 14 мар 2008, 13:21
Откуда: Саратов, Заводской район
Домен: http://conteo.vfose.ru

Re: Собрать сложный MySql запрос

Сообщение Zver » 23 фев 2010, 23:17

С нетерпением ждёмс :)
Zver
Активный участник
 
Сообщения: 1333
Зарегистрирован: 18 дек 2008, 18:51
Откуда: Саратов, Заводской

Re: Собрать сложный MySql запрос

Сообщение Костик » 23 фев 2010, 23:51

особо не вникал ) но мне кажется что то на подобие

(SELECT authorUsername FROM forums_themes ORDER BY themeDate DESC LIMIT 1) AS blablabla

добавить нужно
FreeBSD 9.2 and Fedora 18 user
Аватара пользователя
Костик
Активный участник
 
Сообщения: 1944
Зарегистрирован: 03 сен 2007, 02:15

Re: Собрать сложный MySql запрос

Сообщение Zver » 23 фев 2010, 23:53

Неа... Ты не понял, мне нужно вытащить ID последнего пользователя, оставившего пост в данной теме....
Тобишь из таблицы forums_posts, но при этом это сообщение должно быть в данной теме..
Zver
Активный участник
 
Сообщения: 1333
Зарегистрирован: 18 дек 2008, 18:51
Откуда: Саратов, Заводской

Re: Собрать сложный MySql запрос

Сообщение Костик » 24 фев 2010, 00:14

:crazy: делать тебе нех )
сделай отдельный запрос и все :) или это слишком сложно для слабенького сервера ?
FreeBSD 9.2 and Fedora 18 user
Аватара пользователя
Костик
Активный участник
 
Сообщения: 1944
Зарегистрирован: 03 сен 2007, 02:15

Re: Собрать сложный MySql запрос

Сообщение Zver » 24 фев 2010, 00:18

о_О а если у мя будет больше 500 тем?... И дополнительных запросов тогда будет на 500 штук больше :crazy:
И серверу кабзедц
Zver
Активный участник
 
Сообщения: 1333
Зарегистрирован: 18 дек 2008, 18:51
Откуда: Саратов, Заводской

Re: Собрать сложный MySql запрос

Сообщение Костик » 24 фев 2010, 00:20

ну да :D для этого есть кеширование результатов запросов
FreeBSD 9.2 and Fedora 18 user
Аватара пользователя
Костик
Активный участник
 
Сообщения: 1944
Зарегистрирован: 03 сен 2007, 02:15

Re: Собрать сложный MySql запрос

Сообщение Костик » 24 фев 2010, 00:25

кстати, я такие вопросы искал на специализирующихся по мускулу сайтах

типа - http://www.mysql.ru/webboard/

да и наверняка там уже разбирали такой вопрос :)

ЗЫ:
все давно хотел попробывать какую нибудь программу по визуальному созданию и отладке сложных запросов мускула
вот например типа такой

EMS SQL Query for MySQL - это программа для быстрого и простого построения SQL запросов к базам данных MySQL. В программе существует возможность как визуального создания запросов к MySQL, так и использования многофункционального редактора SQL кода для написания текста запроса вручную. Простой и удобный графический интерфейс позволяет подключаться к базам данных MySQL, выбирать таблицы и поля для запроса к серверу MySQL, устанавливать критерии отбора и многое другое. Программа позволяет работать с несколькими запросами одновременно, редактировать текст запроса во многофункциональном редакторе SQL, просматривать результаты выполнения в различных режимах, визуально создавать запросы MySQL с объединениями и подзапросами, строить основанные на запросах диаграммы, просматривать план выполнения запросов MySQL и выполнять другие операции необходимые для работы с запросами к базам данных MySQL.
FreeBSD 9.2 and Fedora 18 user
Аватара пользователя
Костик
Активный участник
 
Сообщения: 1944
Зарегистрирован: 03 сен 2007, 02:15

Re: Собрать сложный MySql запрос

Сообщение Zver » 02 мар 2010, 08:21

Наконец то что-то надумал.
Но возникает проблема - дублирование записей...
Сам запрос:

Код: Выделить всёРазвернуть

$sql_sets 
"SELECT forums.id              AS forumID,
                                forums.title           AS forumTitle,
                                forums.description     AS forumDesc,
                                forums.moders          AS forumModers,
                                forums.section_id,
                                forums.parent_forum,
                                forums.icon,
                                forums_themes.id       AS lastThemeID,
                                forums_themes.title    AS lastThemeTitle,
                                forums_posts.id        AS lastPostID,
                                forums_posts.date      AS lastPostDate,
                                forums_posts.author_id AS lastPostAuthor,
                                forums_posts.deleted   AS lastPostDeleted,
                                users.id               AS userID,
                                users.username         AS userName,
                                (SELECT count(*) FROM forums_themes WHERE forums_themes.forum_id = forums.id) AS themesCount,
                                (SELECT count(*) FROM forums_posts WHERE forums_posts.forum_id = forums.id) AS postsCount
                        FROM forums
                        LEFT JOIN forums_themes ON forums_themes.forum_id = forums.id
                        LEFT JOIN forums_posts  ON forums_posts.forum_id = forums.id
                        LEFT JOIN users         ON users.id = forums_posts.author_id
                        WHERE section_id = '"
.$row['id']."' AND parent_forum = 0 LIMIT ".$row_all_forums[0];
 



Скрин:

02.03.png
Zver
Активный участник
 
Сообщения: 1333
Зарегистрирован: 18 дек 2008, 18:51
Откуда: Саратов, Заводской

След.

Вернуться в PHP, HTML, CSS...

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 29

cron