2016-06-01 5 views
1

У меня есть две таблицы mysql db 'tags' и 'tags_used'. Я добавил изображения для проверки структуры db.currently iam с помощью larvel fluent query builder. Теперь то, что я хочу запросить, - это количество строк в таблице отношений, как показано ниже. Пожалуйста, помогите мне с любым свободным запросом laravel или простым sql-запросом.Как получить количество элементов в таблице отношений в mysql

id | name |times_used 
------------ 
1 | tag1 | 3 
------------ 
2 | tag2 | 1 
------------ 
3 | tag3 | 5 
------------ 
4 | tag4 | 1 
------------ 
5 | tag5 | 0 
------------ 
---------- 

tags structure

enter image description here

+0

Почему ваш результат имеет несколько строк для одного и того же тега? – Barmar

+0

http://dev.mysql.com/doc/refman/5.7/ru/group-by-functions.html#function_count –

+0

@Barmar: извините, что это была ошибка в вопросе, я обновлю –

ответ

2

использовать LEFT JOIN между таблицами и COUNT() для подсчета совпадений.

SELECT t.id, t.name, IFNULL(COUNT(u.id), 0) AS times_used 
FROM tags AS t 
LEFT JOIN tags_used AS u ON t.id = u.tags_id 
GROUP BY t.id 

Обратите внимание, что вы должны использовать COUNT(u.id), а не COUNT(*), так что вы не сосчитать строки с нулевыми значениями в tags_used столбцах, когда нет ни одного совпадения.

+0

Perfect .. спасибо. , –