SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 08.06.2011 09:45:24

savelikan
Участник
Зарегистрирован: 08.06.2011
Сообщений: 2

Упорядочить записи одной таблицы по данным из другой

Доброе время суток!
У меня есть таблица с новостями и вторая таблица, в которой `value` равно ид новости и отображает количество просмотров новости.
Как мне создать запрос, чтоб новости упорядочить по количеству просмотров?

Неактивен

 

#2 08.06.2011 12:13:31

avgsoft
Завсегдатай
Зарегистрирован: 23.09.2010
Сообщений: 36

Re: Упорядочить записи одной таблицы по данным из другой

схематично это может выглядеть так:


SELECT Новости.*
FROM Просмотры
JOIN Новости ON Новости.ид_новости = Просмотры.ид_новости
ORDER BY Просмотры.количество_просмотров DESC
 


Да, в данном случае не лишним будет индекс по полю Просмотры.количество_просмотров.

Неактивен

 

#3 08.06.2011 22:43:33

savelikan
Участник
Зарегистрирован: 08.06.2011
Сообщений: 2

Re: Упорядочить записи одной таблицы по данным из другой

Огромное спасибо,..... но.....
Я вот тут изменил ситуацию...
У базе test_tema есть название тем, у базе site_look.value ид темы, а site_look.count количество просмотров. Я написал так:

SELECT test_tema.*
FROM site_look
JOIN test_tema ON test_tema.id = site_look.value
ORDER BY site_look.count DESC

Но если пользователь не просматривал тему, нет соответствующей записи в site_look и она не отображается, то скрипт ничего не отображает...
вот.. если нужно...


------test_tema:
    id     teacher     groupaccess     def_S     order_T     order_S     form     onpage     mark_type     text     subtest     status     start     end     daily     day_start     day_end     during     attemps     access_test     access_comments     access_mark     access_result     access_priview


----- site_look
id     table     value     user     date     count     status

Неактивен

 

#4 10.06.2011 01:46:35

D.Demon
Участник
Зарегистрирован: 10.06.2011
Сообщений: 10

Re: Упорядочить записи одной таблицы по данным из другой

Если правильно понимаю то
test_tema - это типа таблица с новостями
site_look - это таблица с просмотрами (если пользователь посмотрел новость добавляешь строку с site_look.value = test_tema.id).

Тогда попробуй так:

SELECT tt.*, count(sl.value) as cnt
FROM test_tema as tt
LEFT JOIN site_look as sl ON tt.id = sl.value
GROUP BY tt.id
ORDER BY cnt DESC;

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson