Вложенный SELECT - MySQL (219889)

Узнай цену своей работы

Формулировка задачи:

День добрый! Я что-то подзабыл как делать вложенный селект Или нужно джоинами, не запинывайте)))) В общем суть такая, что я генерю для каждого юзера xml файлик, в целом он одинаковый за исключением одного индивидуального поля. Собственно есть 2 таблицы 1 таблица MARKERS с инфой общей для всех
id name creator_id
1 pan africa olezha
2 Rel africa User2
2 таблица FOLLOWING носит индивидуальный характер
id_user event_id
olezha 1
user2 1
sql такой
SELECT 
`id`,
`name`,
`creator_id`,
(SELECT COUNT(id_user) 
FROM `markers`a,`following`b 
WHERE b.`id_user` = 'olezha' AND b.`event_id`= a.`id`) AS 'following_state' 
FROM `markers`
собственно не могу сделать для каждой позиции вывод в стиле
id name creator_id following_state
1 pan africa olezha 1
2 Rel africa User2 0
Я понимаю, что он записывает результат по нику olezha для каждой записи вот так.
id name creator_id following_state
1 pan africa olezha 1
2 Rel africa User2 1
Собственно хотелось бы для каждой записи индивидуальный каунт иметь
Попробовал через case . Почти то - что мне нужно, но запрос дублит записи.
SELECT DISTINCT
m.`id`,
m.`name`,
m.`creator_id`, 
CASE 
WHEN m.`id` = f.`event_id` AND f.`id_user`='olezha' 
THEN (
SELECT COUNT(b.id_user) 
FROM `markers`a,`following`b 
WHERE b.`id_user` = 'olezha' AND b.`event_id`= a.`id` ) 
ELSE '0' 
END AS `following_status` 
FROM `markers` m,`following` f
Теперь не могу избавиться от дублей(((

Решение задачи: «Вложенный SELECT»

textual
Листинг программы
SELECT q.id_user, COUNT(q.event_id) FROM following q GROUP BY q.id_user

Объяснение кода листинга программы

  1. В данном коде используется язык SQL для работы с базой данных.
  2. Задачей кода является подсчет количества событий, на которые подписан конкретный пользователь.
  3. Для этого используется оператор SELECT, который выбирает необходимые данные из таблицы.
  4. В качестве выбранных данных выступают id пользователя и количество событий (event_id), на которые он подписан.
  5. Чтобы посчитать количество событий, используется функция COUNT().
  6. Для группировки результатов по id пользователя используется оператор GROUP BY.
  7. В итоге, для каждого id пользователя будет выведено количество событий, на которые он подписан.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4.111 из 5