2013-12-19 2 views
0

Вот структура таблицы Любит:Как сделать запрос sql?

id(int 11) 
idn(varchar 10) 
type (enum ('up','down')) 

Вот структура таблицы Новости:

id(int 11) 
idn(varchar 10) 
header (varchar 100) 
date(datetime) 

Показать новости, я использую SQL-запрос:

SELECT header FROM News n left join Likes l on l.idn=n.idn ORDER by n.date 

Но теперь я хочу выбрать заголовки новостей Из таблицы Новости с заказом de sc count rows in table Likes with type = up.

Как я могу это сделать?

+0

Не могли бы вы переформулировать весь ваш пост, пожалуйста? – Thibault

+0

'left join Likes l ON' вместо' as'. –

+4

@Thibault иногда нам нужно помочь пользователям с выражением их вопроса на правильном английском языке. ОП предпринял попытку поставить какой-то вопрос, но не может быть таким же бегло, как другие на этом языке. По возможности попробуйте отредактировать вопрос. –

ответ

1

Вот запрос, чтобы получить понравившиеся заголовки на каждый день. Если вам нужна TOP для всех дат удалить n.date из ORDER BY:

SELECT header FROM News as n 
LEFT JOIN 
(
    Select idn,Count(*) as UpLikes FROM Likes WHERE type='up' GROUP BY idn 
) as l 
    ON l.idn=n.idn 
ORDER BY n.date,l.UpLikes DESC 
0
SELECT n.header, COUNT(i.`id`) as like_count 
FROM Likes l LEFT JOIN News n ON n.idn = l.idn 
WHERE l.`type` = 'up' 
ORDER BY like_count DESC 
0

Почему бы вам не использовать это:

SELECT id, idn, header, LikeCount 
    FROM 
    (
     SELECT id, idn, header, (SELECT COUNT(1) FROM [Likes]) AS [LikeCount] 
     FROM [News]  
    ) 
    ORDER By [LikeCount] 
+2

Это похоже на Access - not MySQL – virmaior

Смежные вопросы