mySQL select count, несколько таблиц

У меня три таблицы:

table1, table2, table3 

Я пытаюсь получить общее количество строк из каждой таблицы, а также сумму столбца цены, например:

 $r['count'] = total rows of all 3 tables combined; $r['price'] = sum of all prices added together in all 3 tables combined; 

Вот мой запрос:

 SELECT COUNT(*) AS `count`, SUM(price) AS `price` FROM `table1` UNION SELECT COUNT(*) AS `count`, SUM(price) AS `price` FROM `table2` UNION SELECT COUNT(*) AS `count`, SUM(price) AS `price` FROM `table3` 

Когда я запускаю этот запрос, я получаю:

 count price 19 5609399 8 946000 4 0 

Это, в свою очередь, не работает, когда зацикливается на PHP, поскольку они являются 3 отдельными значениями, и я возвращаюсь только «count = 19 и price = 5609399». Они не все выходят вместе как count или price .

Любая помощь очень ценится 🙂

 SELECT COUNT(*) AS `count`, SUM(price) AS `price` FROM ( SELECT price from `table1` UNION ALL SELECT price FROM `table2` UNION ALL SELECT price FROM `table3` ) X 

или вообще объединить 3 пары значений

 select sum(`count`) `count`, sum(`price`) `price` FROM ( SELECT COUNT(*) AS `count`, SUM(price) AS `price` FROM `table1` UNION ALL SELECT COUNT(*) AS `count`, SUM(price) AS `price` FROM `table2` UNION ALL SELECT COUNT(*) AS `count`, SUM(price) AS `price` FROM `table3` ) X 

Как правило , используйте UNION ALL при объединении таблиц, а не UNION, поскольку UNION удаляет дубликаты, поэтому, если ваш счет / сумма была точно

 1, 100 1, 100 2, 200 

Результатом запроса объединения является

 1, 100 # duplicate collapsed 2, 200 

Вы можете сделать это:

 SELECT count(1) AS `count`, SUM(price) AS `price` FROM (SELECT price FROM `table1` UNION ALL SELECT price FROM `table2` UNION ALL SELECT price FROM `table3`) AS `t` 

Попробуйте это как шаблон для ваших таблиц –

 SELECT (SELECT COUNT(*) FROM table1) + (SELECT COUNT(*) FROM table2), (SELECT SUM(price) FROM table1) + (SELECT SUM(price) FROM table2);