![]() |
Показаны 13 сообщений на этой странице |
Форум сетевых администраторов (http://netadmin.ws/forum/index.php)
- MySQL (http://netadmin.ws/forum/forumdisplay.php?forumid=40)
-- Помогите пожалуйста с парой запросов (http://netadmin.ws/forum/showthread.php?threadid=7695)
Помогите пожалуйста с парой запросов
Я в 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 чтобы потом вавести количество просмотров и ответов в этой теме?
Помогите пожалуйста.
Он вроде итак вернуть должен, если эта информация в таблице forum, а если нет, то ты просто не туда тему запостил.
__________________
The time was broken ...
нет, не работает
( прописываю в темплете:
просмотров: $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
Так значит views и replycount у нас в таблице thread, тогда запрос изменяем так: SELECT forum.*,thread.*, CASE
__________________
The time was broken ...
Я не знаю почему, но когда я так изменяю код:
$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
Вместо "thread.*" напиши "thread.views as tviews, thread.replycount as treplies", и вызывай как $forum[tviews] и $forum[treplies]
__________________
The time was broken ...
$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
Вроде да.
__________________
The time was broken ...
RaZEr
я ещё пока не верю своим глазам, но эта штука кажется работает!!! 
Моей благодарности нет предела, ведь уже третья бессонная ночь пошла и теперь кажется можно обновить код и расслабиться..
сейчас потестирую и скажу окончательный результат
__________________
www.ulver.com - сайт о Скандинавии и Язычестве
valhalla.ulver.com - конференция Valhalla
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
И мне с одним запросом помогите!
2 таблицы а и б в них есть столбцы spec (и в той и в той) как из них выбрать уникальные записи в один столбец?
__________________
Админ - вождь Апачей...
используй left join.
__________________
Всегда есть решение.
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. Текущее время 22:50. | Показаны 13 сообщений на этой странице |
Powered by: vBulletin Version 2.2.4
Copyright © Jelsoft Enterprises Limited 2000, 2001.