Intereting Posts
MySQL – условный COUNT с GROUP BY Как использовать инструкцию «LIKE» с строками unicode? Динамическое исправление баз данных Сообщения о заказе MySQL по последнему комментарию или последнему сообщению Как выбрать последние две записи для каждого topic_id в MySQL Что означают флаги столбцов в MySQL Workbench? Создание диапазона чисел в MySQL Django, ManyToManyField – ProgrammingError: отношение foo_bar не существует. Признается в миграциях, хотя отношение никогда не создается Лучшая практика для переменной с SQL в cfquery Вставка в пользовательские типы SQL с подготовленными операторами в java Как сохранить список в столбце таблицы базы данных Заполнение базы данных Android SQLite Генерировать JSON из вложенных наборов (perl, sql, jquery) Как получить данные Unicode, хранящиеся непосредственно в поле, отличном от unicode, в виде формата varchar в sql-сервере Нужна помощь эксперта для решения небольших изменений в запросе пространственных данных

Mysql – подсчет количества нескольких соединенных таблиц

Я сделаю все возможное, чтобы это объяснить. Я пытаюсь выполнить две вещи, но у меня возникают проблемы даже с тем, чтобы первыми работать правильно.

У меня есть схема, которая имеет таблицу-член, которая имеет внешние ключи для нескольких таблиц. В конце я собираюсь рисовать примерно из 10 таблиц, которые могут иметь или не иметь записей для определенного члена. Я пытаюсь получить сумму всех подсчетов. Мой запрос выглядит так:

SELECT (COUNT(tb1.member_id) + COUNT(tb2.member_id)) as total FROM members m LEFT JOIN table_1 tb1 ON tb1.member_id = m.member_id LEFT JOIN table_2 tb2 ON tb2.member_id = m.member_id WHERE m.member_id = 27 

Где 27 является member_id тестовой учетной записи, с которой я работаю. Это не дает точных результатов, и я считаю, что это из-за левого соединения, похоже, это отбрасывает вещи, и я получаю в общей сложности 8, хотя есть только две записи каждого типа. Если я удалю одно из левых объединений, я получу ожидаемый результат.

Может ли кто-нибудь сказать мне, как мне следует это делать?

Это одна из моих проблем. Вторая проблема заключается в том, что в некоторых из этих случаев я хочу, чтобы каждый результат считался 1 или 0, то есть даже если есть 2 или 3 соответствующие записи. Я искал что-то вроде того, что делал результат как bool, но ничего не нашел. Может ли кто-нибудь предложить способ сделать это?

Большое спасибо за чтение, любые советы будут очень оценены. Может быть, я приближаюсь к этой проблеме неправильно, снова приветствуются любые советы.

Хотя я не знаком с современным уровнем mysql, я уверен, что что-то вроде этого будет работать:

 SELECT (select COUNT(*) from table_1 = where member_id = m.member_id) + (select COUNT(*) from table_2 = where member_id = m.member_id) as total FROM members m WHERE m.member_id = 27