Как объединить 2 таблицы определённым образом

138
30 июня 2019, 12:50

Есть запрос:

SELECT * FROM `groups`

И есть запрос:

SELECT COUNT(*) donor_posts_count FROM `donor_posts` WHERE `group_id` = '{$group_id}' AND UNIX_TIMESTAMP(CURRENT_DATE()) < time

Как мне объединить их таким образом что бы результат выдавал список имеющихся групп а также добавлялся столбец где была бы информация о количестве записей за сегодняшний день у определённой группы.

Структура groups:

`id`, `group_id`

Структура donor_posts:

`id`, group_id, `post_id`, `time`

Отдельно результаты работают, но это получается 2 запроса за одно выполнение скрипта, я хочу сократить до 1 запроса. Но не могу сообразить как, пробовал пример разные, ничего не получается. Надеюсь я понятно объяснил того что хочу добиться. Спасибо за внимание.

Хочу что бы получилось вот так:

group_id | donor_posts_count
62728829 | 24
12312444 | 77
12312312 | 23
Answer 1

Вариант 1(предпочтительней):

SELECT 
  g.`group_id`,
  COUNT(p.`group_id`) donor_posts_count 
FROM 
  `groups` g
  LEFT JOIN `donor_posts` p on p.`group_id`= g.`group_id`
GROUP BY g.`group_id`

Вариант 2(эксперементов ради, может тормозить):

SELECT 
  g.`group_id`,
  (
    SELECT 
      COUNT(*)
    FROM 
      `donor_posts` p
    WHERE 
      g.`group_id` = p.`group_id`
  ) donor_posts_count 
FROM 
  `groups` g

Спасибо @Mike за дополнение =)

PS. В связи с выясненым в комментариях:

SELECT 
  g.`group_id`,
  COUNT(p.`group_id`) donor_posts_count 
FROM 
  `groups` g
  LEFT JOIN `posts` p 
    on p.`group_id`= g.`group_id` 
    and UNIX_TIMESTAMP(CURRENT_DATE()) < p.time
GROUP BY g.`group_id`
ORDER BY g.`group_id`
READ ALSO
Из-за чего на самодельном движке происходит это?

Из-за чего на самодельном движке происходит это?

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

117
Как защитить Ajax запрос от спама.

Как защитить Ajax запрос от спама.

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

117
CRUD API и разделение сущностей

CRUD API и разделение сущностей

У меня есть таблицы со связью многие ко многим

136
Роутинг в веб приложении

Роутинг в веб приложении

Мой вопрос следующий

97