Finesse: что-то мне от вас приходят уведомления о ответах на почту, а они здесь не появляются. Говорите несколькими запросами выбирать информацию? А одним нельзя, но без дублей? В MySQL ничего для этого нет?
- все уникальные по id записи из events_dates
- все уникальные по id записи из events_projects + соответствующие названия проектов из projects.pr_name
- все уникальные по id записи из events_research_directions + соответствующие названия направлений исследований из research_direction.rd_name
Просто может я что-то неправильно делаю? Почему в mysql нельзя обойтись без декартова переумножения при JOIN-ах?
SELECT
events.id
, events.e_name
, events.e_s_description
, events.e_type
, events_type.et_name
, GROUP_CONCAT( DISTINCT events_dates.id SEPARATOR '|' ) AS ed_ids
, GROUP_CONCAT( DISTINCT events_dates.ed_date_start SEPARATOR '|' ) AS ed_date_start
, GROUP_CONCAT( events_dates.ed_place_start SEPARATOR '|' ) AS ed_place_start
, GROUP_CONCAT( DISTINCT events_projects.ep_proj_id SEPARATOR '|' ) AS ep_proj_id
, GROUP_CONCAT( DISTINCT projects.pr_name SEPARATOR '|' ) AS pr_name
, GROUP_CONCAT( DISTINCT events_research_directions.erd_res_dir_id SEPARATOR '|' ) AS erd_res_dir_id
, GROUP_CONCAT( DISTINCT research_direction.rd_name SEPARATOR '|' ) AS rd_name
FROM events
LEFT JOIN events_dates ON events_dates.ed_event_id = events.id AND events_dates.ed_is_active = '1'
LEFT JOIN events_type ON events_type.id = events.e_type
LEFT JOIN events_projects ON events_projects.ep_event_id = events.id AND ep_is_active = '1'
LEFT JOIN projects ON events_projects.ep_proj_id = projects.id
LEFT JOIN events_research_directions ON events_research_directions.erd_event_id = events.id AND erd_is_active = '1'
LEFT JOIN research_direction ON events_research_directions.erd_res_dir_id = research_direction.id
WHERE
events.e_is_active = '1'
AND events.e_type = 1
GROUP BY events.id
ORDER BY events.e_date_add DESC
@FacedSID а как именно ведет себя связка nodeJS + socket.io в вашей задаче? Я имею ввиду, как решается проблема обновлений сразу для нескольких устройств?
"В таблице пользователей, которая, вероятно, у вас уже существует, сделайте числовое поле unread_messages_count с количеством непрочитанных сообщений, которое обновляйте, когда кто-то пишет пользователю новое сообщение или сам пользователь читает непрочитанное ранее сообщение.
В таблице сообщений сделайте поле is_read (true/false), на которое повесьте индекс, так вы сможете определить, какие сообщения в данный момент не прочитаны."
Извиняюсь, что ввел в заблуждение, мне нужен ответ, как это сделать в mysql, чтобы при 500 запросах на select количества новых сообщений б. д. не упала.
Причем надо еще помечать какие сообщения прочитаны, а какие нет