UNION принимает результаты нескольких операторов SELECT и представляет их как единый результирующий набор. Но для этого количество столбцов в отдельных операторах SELECT должно быть одинаковым.
Чтобы понять это, он может помочь форматировать в запросе немного:
SELECT
SUM(`cash`) AS `cash`,
COUNT(*) AS `rows`
FROM `table_1`
WHERE `login` = 'test'
UNION ALL
SELECT
COUNT(*) AS `rows2`
FROM `table_2`
WHERE `login` = 'test'
Ваш первый запрос выбирает два столбца, денежные и строк. Второй запрос выбирает только один столбец, rows2. Также обратите внимание, что поскольку UNION объединяет результаты, вы можете также вызвать соответствующие столбцы в каждом запросе с тем же именем.
Если вы действительно не имеют значения, которые вы хотите выбрать из второй таблицы, вы можете заменить значение по умолчанию для пропущенных колонок:
SELECT
SUM(`cash`) AS `cash`,
COUNT(*) AS `rows`
FROM `table_1`
WHERE `login` = 'test'
UNION ALL
SELECT
NULL AS `cash`
COUNT(*) AS `rows`
FROM `table_2`
WHERE `login` = 'test'
Ну, вы должны позаботиться о том, что результат наборы обоих одиночных запросов аналогичны по своей структуре, поэтому их можно объединить в одну таблицу. Как еще должен движок создать таблицу из этих двух наборов? – arkascha
Хм, хорошо, но я новичок в MySQL. – Dawid77
Можете ли вы показать мне пример кода? – Dawid77