У меня есть четыре таблицы Как ниже
Тэг:
------------------------------------------------------------------------------------------------
| list_id |user_id | name | category | fees | details |created_on |
------------------------------------------------------------------------------------------------
| 90cc57a4-f782-4c57-ac98-1965c57ece57 |user 100 |satwik| music | 500 | dummy |2015-08-02 |
------------------------------------------------------------------------------------------------
изменил мой list_id из случайной строки в UUID.
из этого комментария на php.net
qaru.site/info/454234/...
В таблице списков list_id является первичным ключом, я знаю, что использование autoincreament лучше, но мое требование похоже на это. и s.no является первичным ключом для остальной таблицы.
Мне нужно создать случайный ключ со стороны PHP, потому что установить list_id в сеансе и избежать другого запроса для установки list_id в сеансе. Любит:
----------------------------------------------------------------
|.sno | list_id | user_id | likes |
----------------------------------------------------------------
| 1 | 90cc57a4-f782-4c57-ac98-1965c57ece57 | user110 | 1 |
----------------------------------------------------------------
| 2 | 90cc57a4-f782-4c57-ac98-1965c57ece57 | user215 | 1 |
----------------------------------------------------------------
| 3 | 90cc57a4-f782-4c57-ac98-1965c57ece57 | user200 | 1 |
----------------------------------------------------------------
комментарии:
-------------------------------------------------------------------------
|.sno | user_id | list_id | comment |
-------------------------------------------------------------------------
| 1 | user 205| 90cc57a4-f782-4c57-ac98-1965c57ece57 | dummy comment |
-------------------------------------------------------------------------
Просмотров:
----------------------------------------------------------------
|.sno | list_id | user_id | views |
----------------------------------------------------------------
| 1 | 90cc57a4-f782-4c57-ac98-1965c57ece57 | user110 | 2 |
----------------------------------------------------------------
| 2 | 90cc57a4-f782-4c57-ac98-1965c57ece57 | user215 | 1 |
----------------------------------------------------------------
| 3 | 90cc57a4-f782-4c57-ac98-1965c57ece57 | user200 | 1 |
----------------------------------------------------------------
Я пытаюсь получить список user user user100 из таблицы списков
и нужно получить количество просмотров, например, комментарии для идентификатора списка пользователя из разных таблиц, которые у меня есть.
Я попытался использовать этот запрос из codeigniter
$this->db->select ( 'list.*,count(v.views) as views,count(l.likes) as likes,count(c.comment) as comments' )
->from ( 'listings as list' )
->join ( 'views v', 'v.list_id = list.list_id')
->join ( 'likes l', 'l.list_id = list.list_id')
->join ( 'comments c', 'c.list_id = list.list_id');
$this->db->where ( 'list.user_id', $user_id);
$query = $this->db->get ();
Я получаю неправильные взгляды и комментарии и комментарии.
эта конструкция базы данных хороша или мне нужно что-то изменить. У меня меньше шансов на использование объединений, пожалуйста, помогите мне.
EDIT:
Я попробовал этот запрос из ответов ниже
$this->db->select ( 'l.*,count(distinct v.s_no) as views,count(distinct li.s_no) as likes,count(distinct c.s_no) as comments' ,false)
->from ( 'listings as l' )
->join ( 'likes li', 'l.list_id = li.list_id')
->join ( 'comments c', 'l.list_id = c.list_id')
->join ( 'views v', 'l.list_id = v.list_id')
->where ( 'l.user_id', $id);
Я получаю то, что хочу, но этот способ запроса не выполняется (возвращает null), если у меня нет комментариев или представлений или нравится.