Форум сетевых администраторов
Показаны 13 сообщений на этой странице

Форум сетевых администраторов (http://netadmin.ws/forum/index.php)
- MySQL (http://netadmin.ws/forum/forumdisplay.php?forumid=40)
-- Помогите пожалуйста с парой запросов (http://netadmin.ws/forum/showthread.php?threadid=7695)


Помещено Varsosnill 30-01-2004 в 23:59:

Question Помогите пожалуйста с парой запросов

Я в mysql совершенно не шарю и хотел спросить у знающих людей. Вот имеем такой код:

$forums=$DB_site->query('SELECT forum.*, CASE WHEN icon.iconpath IS NULL THEN \'\' ELSE icon.iconpath END as icon, thread.title as thtitle FROM forum left outer join thread on thread.forumid = forum.forumid and thread.lastpost >= (forum.lastpost-30) LEFT OUTER JOIN icon ON icon.iconid=thread.iconid WHERE displayorder<>0 AND active=1 ORDER BY parentid,displayorder');

Ð_то код последней темы на главной странице vBulletin (lastpost hack), который прописывается в index.php. Проблема состоит в том, куда в нём можно правильно прописать запросы на views и replycount чтобы потом вавести количество просмотров и ответов в этой теме?

Помогите пожалуйста.


Помещено RaZEr 31-01-2004 в 00:54:

Он вроде итак вернуть должен, если эта информация в таблице forum, а если нет, то ты просто не туда тему запостил.

__________________
The time was broken ...


Помещено Varsosnill 31-01-2004 в 01:44:

нет, не работает ( прописываю в темплете:
просмотров: $forum[views] | ответов: $forum[replycount]
и никакой реакции..


--------
Вот например запрос:

$lastposttitle = $DB_site->query("SELECT iconid,title,threadid,views,replycount FROM thread WHERE forumid='$forum[forumid]' AND open!='10' AND visible=1 ORDER BY lastpost DESC");

в темплете мы прописываем:

$lastposttitle[views], $lastposttitle[replycount]

и получаем кол-во просмотров и ответов.. а как это сделать в коде:

$forums=$DB_site->query('SELECT forum.*, CASE WHEN icon.iconpath IS NULL THEN '' ELSE icon.iconpath END as icon, thread.title as thtitle FROM forum left outer join thread on thread.forumid = forum.forumid and thread.lastpost >= (forum.lastpost-30) LEFT OUTER JOIN icon ON icon.iconid=thread.iconid WHERE displayorder<>0 AND active=1 ORDER BY parentid,displayorder');

куда и как здесь прописать views и replycount?

__________________
www.ulver.com - сайт о Скандинавии и Язычестве
valhalla.ulver.com - конференция Valhalla


Помещено RaZEr 31-01-2004 в 01:56:

Так значит views и replycount у нас в таблице thread, тогда запрос изменяем так: SELECT forum.*,thread.*, CASE

__________________
The time was broken ...


Помещено Varsosnill 31-01-2004 в 02:30:

Я не знаю почему, но когда я так изменяю код:

$forums=$DB_site->query('SELECT forum.*,thread.*, CASE WHEN icon.iconpath IS NULL THEN '' ELSE icon.iconpath END as icon, thread.title as thtitle FROM forum left outer join thread on thread.forumid = forum.forumid and thread.lastpost >= (forum.lastpost-30) LEFT OUTER JOIN icon ON icon.iconid=thread.iconid WHERE displayorder<>0 AND active=1 ORDER BY parentid,displayorder');

у меня весь форум перекособочивает, все разделы пропадают и всё кверх дном.. видно что-то неправильно.. может быть надо как-то по другому?

Varsosnill добавил 31-01-2004 в 02:38:47:
Я немного изменил порядок, поставил thread.*, перед
forum.*, (SELECT thread.*,forum.*, CASE) и форум вернулся на место, теперь его не кособочит

другой вопрос - как в темплете правильно вызывать views и replycount?

просмотров: $forums[views] | ответов: $forums[replycount]
- ничего не выводит

просмотров: $forum[views] | ответов: $forum[replycount]
- выводит какие-то нереальные случайные цифры, не имеющие отношения к действительности

как правильно сделать?

__________________
www.ulver.com - сайт о Скандинавии и Язычестве
valhalla.ulver.com - конференция Valhalla


Помещено RaZEr 31-01-2004 в 02:42:

Вместо "thread.*" напиши "thread.views as tviews, thread.replycount as treplies", и вызывай как $forum[tviews] и $forum[treplies]

__________________
The time was broken ...


Помещено Varsosnill 31-01-2004 в 02:50:

$forums=$DB_site->query('SELECT forum.*, CASE WHEN icon.iconpath IS NULL THEN '' ELSE icon.iconpath END as icon, thread.title as thtitle, thread.views as tviews, thread.replycount as treplies FROM forum left outer join thread on thread.forumid = forum.forumid and thread.lastpost >= (forum.lastpost-30) LEFT OUTER JOIN icon ON icon.iconid=thread.iconid WHERE displayorder<>0 AND active=1 ORDER BY parentid,displayorder');

- так правильно?

__________________
www.ulver.com - сайт о Скандинавии и Язычестве
valhalla.ulver.com - конференция Valhalla


Помещено RaZEr 31-01-2004 в 02:52:

Вроде да.

__________________
The time was broken ...


Помещено Varsosnill 31-01-2004 в 02:55:

RaZEr
я ещё пока не верю своим глазам, но эта штука кажется работает!!!
Моей благодарности нет предела, ведь уже третья бессонная ночь пошла и теперь кажется можно обновить код и расслабиться..

сейчас потестирую и скажу окончательный результат

__________________
www.ulver.com - сайт о Скандинавии и Язычестве
valhalla.ulver.com - конференция Valhalla


Помещено Varsosnill 17-06-2004 в 17:43:

RaZEr
всё работало просто прекрасно, спасибо, но теперь встала проблема перехода на vB3 и проблема повторяется

Объясню ситуацию.

В vB2 при выборке из базы данных для хака последнего ответа
добавлялась выборка "thread.views as tviews, thread.replycount as
treplies". Вот кусок кода где это всё происходило (файл index.php):

---------------------------
### НАЙТИ:
$forums=$DB_site->query('SELECT * FROM forum WHERE displayorder<>0 AND active=1 ORDER BY parentid,displayorder');

### ЗАМЕНИТЬ:
$forums=$DB_site->query('SELECT forum.*, CASE WHEN icon.iconpath IS NULL THEN '' ELSE icon.iconpath END as icon, thread.title as thtitle, thread.views as tviews, thread.replycount as treplies FROM forum left outer join thread on thread.forumid = forum.forumid and thread.lastpost >= (forum.lastpost-30) LEFT OUTER JOIN icon ON icon.iconid=thread.iconid WHERE displayorder<>0 AND active=1 ORDER BY parentid,displayorder');
---------------------------

И ещё в файле forumdisplay.php тоже самое:

---------------------------
### НАЙТИ:
$forums=$DB_site->query('SELECT * FROM forum WHERE displayorder<>0 AND active=1 ORDER BY parentid,displayorder,forumid');

### ЗАМЕНИТЬ:
$forums=$DB_site->query('SELECT forum.*, CASE WHEN icon.iconpath IS NULL THEN '' ELSE icon.iconpath END as icon, thread.title as thtitle, thread.views as tviews, thread.replycount as treplies FROM forum left outer join thread on thread.forumid = forum.forumid and thread.lastpost >= (forum.lastpost-30) LEFT OUTER JOIN icon ON icon.iconid=thread.iconid WHERE displayorder<>0 AND active=1 ORDER BY parentid,displayorder,forumid');
---------------------------

И далее в темплете forumhome_lastpostby я добавлял под конец:

просмотров: $forum[tviews] | ответов: $forum[treplies]

А как сейчас сделать это-же в vB3 не знаю вообще. Помоги пожалуйста.. Где мне сделать эти дополнительные запросы для формы последнего сообщения на главной страничке форума и как потом вывести в темплете последнего сообщения?

__________________
www.ulver.com - сайт о Скандинавии и Язычестве
valhalla.ulver.com - конференция Valhalla


Помещено he][es 24-08-2004 в 13:01:

И мне с одним запросом помогите!
2 таблицы а и б в них есть столбцы spec (и в той и в той) как из них выбрать уникальные записи в один столбец?

__________________
Админ - вождь Апачей...


Помещено polo 24-08-2004 в 18:27:

используй left join.

__________________
Всегда есть решение.


Помещено he][es 24-08-2004 в 21:43:

polo но тогда он во 2ой столбец добавляет Или я чего то не понял?
И ещё один запрос "в догонку":
2 табл. а и б запрос типа:
SELECT id FROM a WHERE spec='some text';
id_a spec
табл. б вида:
id_б id_a spec
Как составить запрос, что бы мне выдались все id_а из табл. а содержащие нужный spec или в а или в б? Я придумал, что то вида:
SELECT id_а FROM а, б WHERE (а.spec = 'some text' OR б.spec = 'some text') GROUP BY soiskatel_id;
Но это работает только когда, для соотв. записи из б есть запись в а, а так бывает не всегда...

__________________
Админ - вождь Апачей...


Формат времени GMT. Текущее время 21:05.
Показаны 13 сообщений на этой странице

Powered by: vBulletin Version 2.2.4
Copyright © Jelsoft Enterprises Limited 2000, 2001.