|
|
|
| Доброго времени суток!
Нужно одним запросом выбрать всё из таблицы
s_forum_topics:
`id`
`sectid`
`author`
`date`
`title`
`top`
`closed`
Затем посчитать сколько постов имеет юзер, айди которого находится в `author` таблицы s_forum_topics(таблица с топиками),
т.е надо сосчитать сколько раз его ид встречается в `author` таблицы s_forum_posts(таблица с постами)
s_forum_posts:
`id`
`tid`
`author`
`date`
`text`
`firstpost`
И ещё по тому же айди в `author` таблицы s_forum_topics, узнать ник автора из таблицы s_users
имя находится в поле `login`, айди хранятся в поле `id`.
И как я уже сказал, всё это нужно сделать одним запросом.
Если кто меня понял, то помогите пожалуйста :) Два дня читал мануал, пытался сам сделать, но и близко не приблизился к решению.
Спасибо за внимание :)
Ах да, и упорядочить это надо по `top` desc , `date` desc из s_forum_topics :-)) Я вообще с этим майскьюэлем не могу разобраться :-( | |
|
|
|
|
|
|
|
для: zxcAq
(29.05.2007 в 00:41)
| | Хм... а почему именно одним запросом? Здесь вероятно одним запросом не получится, но даже если бы получилось, такой запрос вряд ли работал быстрее, чем три отдельных, а при больших объёмах данных - 100% медленее. | |
|
|
|
|
|
|
|
для: cheops
(29.05.2007 в 08:50)
| | >Хм... а почему именно одним запросом? Здесь вероятно одним запросом не получится, но даже если бы получилось, такой запрос вряд ли работал быстрее, чем три отдельных, а при больших объёмах данных - 100% медленее.
А непосредственно сами запросы можно? Я так не пойму как это реализовать :) | |
|
|
|
|
|
|
|
для: zxcAq
(29.05.2007 в 00:41)
| | >Нужно одним запросом выбрать всё из таблицы
>s_forum_topics:
> `id`
> `sectid`
> `author`
> `date`
> `title`
> `top`
> `closed`
SELECT `id`,`tid`,`author` AS a_id,`date`,`text`,`firstpost`
, t_counts.cnt as u_count
, s_users.login as a_login
FROM s_forum_topics
>Затем посчитать сколько постов имеет юзер, айди которого находится в `author` таблицы s_forum_topics(таблица с топиками),
LEFT JOIN (
SELECT COUNT(id) AS cnt, author FROM s_forum_posts GROUP BY author
) as t_counts ON a_id = t_counts.author
>т.е надо сосчитать сколько раз его ид встречается в `author` таблицы s_forum_posts(таблица с постами)
>s_forum_posts:
> `id`
> `tid`
> `author`
> `date`
> `text`
> `firstpost`
>И ещё по тому же айди в `author` таблицы s_forum_topics, узнать ник автора из таблицы s_users
>имя находится в поле `login`, айди хранятся в поле `id`.
LEFT JOIN s_users ON a_id = s_users.id
>И как я уже сказал, всё это нужно сделать одним запросом.
>Если кто меня понял, то помогите пожалуйста :) Два дня читал мануал, пытался сам сделать, но и близко не приблизился к решению.
>Спасибо за внимание :)
>
>Ах да, и упорядочить это надо по `top` desc , `date` desc из s_forum_topics :-))
ORDER BY s_forum_topics.`top` desc , s_forum_topics.`date` desc
>Я вообще с этим майскьюэлем не могу разобраться :-(
SELECT `id`,`tid`,`author` AS a_id,`date`,`text`,`firstpost`
, t_counts.cnt as u_count
, s_users.login as a_login
FROM s_forum_topics
LEFT JOIN
(SELECT COUNT(id) AS cnt, author FROM s_forum_posts GROUP BY author
) as t_counts ON a_id = t_counts.author
LEFT JOIN s_users ON a_id = s_users.id
ORDER BY s_forum_topics.`top` desc , s_forum_topics.`date` desc
|
| |
|
|
|
|
|
|
|
для: Trianon
(29.05.2007 в 09:40)
| | Вероятно где-то ошибка.
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource
Этот запрос ничего не возвращает. :-(
Не могли бы вы исправить ошибку, если она есть. Или это я что-то не так делаю?
Спасибо. | |
|
|
|
|
|
|
|
для: zxcAq
(29.05.2007 в 13:34)
| | поставьте перед этим вывод mysql_error()
что сообщает? | |
|
|
|
|
|
|
|
для: Trianon
(29.05.2007 в 14:31)
| | Column 'id' in field list is ambiguous | |
|
|
|
|
|
|
|
для: zxcAq
(29.05.2007 в 14:43)
| | Тогда надо уточнить имена
SELECT t.id, t.tid, t.author AS a_id, t.`date`,t.`text`,t.`firstpost`
, t_counts.cnt as u_count
, s_users.login as a_login
FROM s_forum_topics AS t
LEFT JOIN
(SELECT COUNT(id) AS cnt, author FROM s_forum_posts GROUP BY author
) as t_counts ON a_id = t_counts.author
LEFT JOIN s_users ON a_id = s_users.id
ORDER BY s_forum_topics.`top` desc , s_forum_topics.`date` desc
|
| |
|
|
|
|
|
|
|
для: Trianon
(29.05.2007 в 14:55)
| | А теперь:
Unknown column 't.tid' in 'field list' | |
|
|
|
|
|
|
|
для: zxcAq
(29.05.2007 в 15:14)
| |
SELECT t.id, t.sectid, t.author AS a_id, t.`date`,t.title,t.top,t.closed
, t_counts.cnt as u_count
, s_users.login as a_login
FROM s_forum_topics AS t
LEFT JOIN
(SELECT COUNT(id) AS cnt, author FROM s_forum_posts GROUP BY author
) as t_counts ON a_id = t_counts.author
LEFT JOIN s_users ON a_id = s_users.id
ORDER BY s_forum_topics.`top` desc , s_forum_topics.`date` desc
|
| |
|
|
|
|
|
|
|
для: Trianon
(29.05.2007 в 15:23)
| | И снова еррор.
Unknown column 'a_id' in 'on clause' | |
|
|
|
|
|
|
|
для: Trianon
(29.05.2007 в 15:23)
| |
SELECT t.id, t.sectid, t.author AS a_id, t.`date`,t.title,t.top,t.closed
, t_counts.cnt as u_count
, s_users.login as a_login
FROM s_forum_topics AS t
LEFT JOIN
(SELECT COUNT(id) AS cnt, author FROM s_forum_posts GROUP BY author
) as t_counts ON t.aurhor = t_counts.author
LEFT JOIN s_users ON t.aurhor = s_users.id
ORDER BY s_forum_topics.`top` desc , s_forum_topics.`date` desc
|
| |
|
|
|
|
|
|
|
для: Trianon
(29.05.2007 в 16:10)
| | Хм... Что то я тогда смысла не вижу этой записи
| |
|
|
|
|
|
|
|
для: Trianon
(29.05.2007 в 16:10)
| | Спасибо огромное... Всё работает. | |
|
|
|