Gev Опубликовано 1 Февраля 2010 Жалоба Поделиться Опубликовано 1 Февраля 2010 (изменено) Как такой запрос к MySQL выразить в терминах драйвера IPB 2.3.6? $req="SELECT D.*, C.grp FROM (SELECT author_id as id, count(*) as cnt FROM $sql_pref" . "posts WHERE pid IN ( $pid_string ) GROUP BY id ) D LEFT JOIN ( SELECT id,mgroup as grp FROM $sql_pref" . "members ) C ON D.id = C.id ; "; Изменено 1 Февраля 2010 пользователем Gev Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 Ritsuka Опубликовано 1 Февраля 2010 Жалоба Поделиться Опубликовано 1 Февраля 2010 (изменено) Такого бездарного SELECT из SELECT давно не видел.... Во-первых, у вас неправильно (с точки зрения логики) составлен запрос. Во-вторых - вам точно нужно в cnt выводить количество сообщений из списка сообщений $pid_string, а не общее количество сообщений пользователя? Мне почему-то кажется, вам нужно общее количество сообщений, а вот ваш неправильный запрос делает другое. В-третьих, двойки у меня нет, так что вот запрос для тройки: $this->DB->build( array( 'select' => 'p.author_id, m.members_display_name, m.member_group_id, g.g_title, m.posts', 'from' => array( 'p' => 'posts' ), 'where' => 'p.pid in ( '.$pid_string.' )', 'add_join' => array( array( 'select' => 'm.members_display_name, m.member_group_id, m.posts', 'from' => array( 'm' => 'members' ), 'where' => 'm.member_id=p.author_id', 'type' => 'left' ), array( 'select' => 'g.g_title', 'from' => array( 'g' => 'groups' ), 'where' => 'g.g_id=m.member_group_id', 'type' => 'left' ) ) ) ); Изменено 1 Февраля 2010 пользователем Ritsuka Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 habahaba Опубликовано 2 Февраля 2010 Жалоба Поделиться Опубликовано 2 Февраля 2010 Для 2.3.6 почти также: $this->ipsclass->DB->simple_construct( array( 'select' => 'p.author_id, m.members_display_name, m.member_group_id, g.g_title, m.posts', 'from' => array( 'p' => 'posts' ), 'where' => 'p.pid in ( '.$pid_string.' )', 'add_join' => array( array( 'select' => 'm.members_display_name, m.member_group_id, m.posts', 'from' => array( 'm' => 'members' ), 'where' => 'm.member_id=p.author_id', 'type' => 'left' ), array( 'select' => 'g.g_title', 'from' => array( 'g' => 'groups' ), 'where' => 'g.g_id=m.member_group_id', 'type' => 'left' ) ) ) ); $this->ipsclass->DB->simple_exec(); Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 Ritsuka Опубликовано 2 Февраля 2010 Жалоба Поделиться Опубликовано 2 Февраля 2010 habahaba, там точно структура табличек не отличается? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 habahaba Опубликовано 2 Февраля 2010 Жалоба Поделиться Опубликовано 2 Февраля 2010 Незнаю, я просто написал как будет работать на 2.3.х Остальное как говорится не мои проблемы))) Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 Gev Опубликовано 4 Февраля 2010 Автор Жалоба Поделиться Опубликовано 4 Февраля 2010 Спасибо, ребята. Буду разбираться. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Вопрос
Gev
Как такой запрос к MySQL выразить в терминах драйвера IPB 2.3.6?
$req="SELECT
D.*, C.grp
FROM (SELECT author_id as id, count(*) as cnt FROM $sql_pref" . "posts
WHERE pid IN ( $pid_string )
GROUP BY id ) D
LEFT JOIN
( SELECT id,mgroup as grp
FROM $sql_pref" . "members
) C ON D.id = C.id ;
";
Изменено пользователем GevСсылка на комментарий
Поделиться на других сайтах
5 ответов на этот вопрос
Рекомендуемые сообщения
Присоединиться к обсуждению
Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.