Вот почему вы никогда не должны использовать SQL'89 неявный синтаксис объединения.
У вас нет условий присоединения, в результате чего получается перекрестное соединение.
Перепишите запрос, используя Явные синтаксис:
SELECT count(t1.id) , t2.special_value
FROM table_1 AS t1
INNER JOIN table_2 AS t2 ON (t1.`group` = t2.code) <<-- join condition here
WHERE .... <<-- filter condition here
GROUP BY .... <<-- group by field here
Я не знаю, как таблица t1 и t2 связаны между собой, так что вы должны настроить этот немного, но это, как он должен работать ,
И, пожалуйста, никогда не используйте неявный where
снова присоединяется.
Замечания
Я интересно, что p.`group`
и pp.code
есть, но я предполагаю, что вы имели в виду, чтобы написать t1.`group`
и t2.code
Вам нужно только, чтобы избежать полей и tablenames в `
обратные кавычки, если они защищены слова.
Лично все эти обратные образы делают меня головокружением, но это только я.
Как первый запрос возвращает 'special_value' в столбце A. И второй запрос возвращает 2 столбца? –
Что это за «pp» и «p»? –
Трудно сказать, что не так, не зная ничего о вашей схеме, но, похоже, вы не определили какую-либо связь между таблицами t1 и t2, в результате чего получилось перекрестное соединение. Кроме того, использование агрегатной функции (счет) без какой-либо GROUPing вызывает проблемы. –