2016-08-26 4 views
1

У меня есть две таблицы:MYSQL Сортировать по сумме другой таблицы

cat_seriale - который представляет собой последовательные категории и обеспечивает идентификаторы для каждой категории, как: 1, 2, 3, 4, 5.

seriale - который является актуальным сериалом tv, и каждый сериал tv попадает в одну категорию.

Я пытаюсь

SELECT * FROM cat_seriale WHERE `id`='1' 

и дополнительно ко всем столбцам, показать сумму views колонки из всех строк в таблице seriale.

Если кто-то может мне помочь, это было бы здорово.

Заранее спасибо.

SCHEMA:

cat_seriale columns: 
Primary Key - catid(int) 
catname (varchar) 
... 

seriale columns: 
Primary Key - id(int) 
cat (int) 
views(int) 

нужно выбрать cat_seriale где ID = 1, и выберите сумму взглядов в seriale колоннах, где кот же с идентификатором из cat_seriale.

+0

Обеспечить схему как для '' cat_seriale' и таблиц seriale'. – peterm

+0

done;) надеюсь, что все в порядке, его первый раз объясняет вопросы mysql –

+0

'SELECT cat_seriale. *, SUM (seriale.views) FROM cat_seriale LEFT JOIN seriale ON seriale.cat = cat_seriale.catid WHERE cat_seriale.catid = 1'? – eggyal

ответ

1

Как это:

select *, (select sum(views) from seriale S where S.cat=C.catid) as sum_views 
    from cat_seriale C 
where id='1' 
order by sum_views 
1

Регистрация двух таблиц.

SELECT c.*, SUM(s.views) AS views 
FROM cat_seriale AS c 
LEFT JOIN seriale AS s ON c.catid = s.cat 
WHERE c.id = `1` 
GROUP BY c.catid 
0

+1 для ответа @ Mike, но эта версия имеет более высокую производительность:

SELECT c.*, SUM(s.views) as summary 
FROM cat_seriale c 
LEFT JOIN seriale s ON s.cat = c.catid 
WHERE c.id = '1' 
GROUP BY c.catid 
ORDER BY summary 
+0

Какой смысл группировать по тому же полю, которое вы выбираете в предложение 'WHERE'? – Barmar

+0

Спасибо, @Barmar, это была опечатка – mnv

+0

@Barmar, если нет группы, будет отображаться только одна строка. –

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