MYSQL - COUNT отличается - PullRequest
       3

MYSQL - COUNT отличается

0 голосов
/ 26 декабря 2018

У меня есть две таблицы данных, вы можете найти их в приложении.

Я хотел бы получить:

  • Код
  • Наименование субъектов
  • Количество не оцениваемых видов деятельности

Но только у субъектов, у которых есть 4 или более не оцениваемых вида деятельности ...

Это код, который у меня есть, но «Имя», которое я получаю, не то, что я хочу ...

И это то, на что я надеялся (прилагается)

Я попробовал другоевещи, и я получаю правильное имя, но не то, что я хочу ..

Любая помощь?Спасибо!

Таблица 1

Table 1

Таблица 2

Table 2

Мой код

My code

Результат Iхочу

Result I want

Другой неправильный код

Other wrong code

Ответы [ 2 ]

0 голосов
/ 27 декабря 2018

Начиная со второго запроса: рекомендуется использовать агрегированный запрос с предложением «HAVING BY», однако способ соединения таблиц не подходит, поскольку в результате получается декартово произведение.

Попробуйте:

SELECT
    s.subject_id,
    s.name,
    COUNT(distinct n.act_id)
FROM 
    subject as s
    INNER JOIN nonevaluableactivity as n
        ON n.subject_id = s.subject_id
GROUP BY
    s.subject_id,
    s.name
HAVING
    COUNT(distinct n.act_id) >= 4

0 голосов
/ 27 декабря 2018

В первом запросе вам не хватает критериев соединения.Ваш код просто говорит: ... FROM table1 JOIN table2 GROUP BY... Объединение без условия объединения создаст декартово соединение (все записи из таблицы1 будут связаны со всеми записями из таблицы2).Просто удалите group by и count из вашего запроса, чтобы увидеть, что я имею в виду под этим.

Просто добавьте условие соединения (кажется, что subject_id является общим полем между двумя таблицами):

... FROM table1 JOIN table2 on table1.subject_id=table2.subject_id GROUP BY...

Просьба заменить таблицу1 и таблицу2 именами соответствующих таблиц.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...