Это, вероятно, ответит на письмо того, о чем вы, похоже, просите, но не очень разумный способ сформулировать запрос:
SELECT c.numusers, n.type, n.name
FROM (SELECT "new" AS type, name FROM newUsers WHERE name LIKE '%John%') AS n
JOIN (SELECT COUNT(*) AS numusers FROM newUsers WHERE name LIKE '%John%') AS c
UNION
SELECT c.numusers, o.type, o.name
FROM (SELECT "old" AS type, name FROM oldUsers WHERE name LIKE '%John%') AS o
JOIN (SELECT COUNT(*) AS numusers FROM oldUsers WHERE name LIKE '%John%') AS c
ORDER BY 1 ASC LIMIT 1, 10
Единственная странность здесь в том, что нет объединенияусловие (ни ON, ни предложение USING) между двумя таблицами.Возможно, вам придется использовать CROSS JOIN вместо (INNER) JOIN;В качестве альтернативы, вы можете ввести столбец "new" AS type
в запрос подсчета и присоединиться к ON n.type = c.type
.Затем вам может понадобиться добавить предложение GROUP BY - в большинстве СУБД оно вам понадобится, но MySQL может позволить вам обойтись без него.
Однако я думаю, что вам лучше справиться с двумя отдельными запросами - один длятип и имя, как в вашем вопросе, а другое как:
SELECT COUNT(*) AS numusers, "new" AS type
FROM newUsers
WHERE name LIKE '%John%'
GROUP BY type
UNION
SELECT COUNT(*) AS numusers, "old" AS type
FROM oldUsers
WHERE name LIKE '%John%'
GROUP BY type;
Учитывая, что вы используете MySQL, вы можете обойтись без предложений GROUP BY во втором запросе.