COUNT (*) из нескольких таблиц в MySQL

Как мне выбрать COUNT (*) из нескольких таблиц в MySQL?

Такие как:

SELECT COUNT(*) AS table1Count FROM table1 WHERE someCondition
JOIN?? 
SELECT COUNT(*) AS table2Count FROM table2 WHERE someCondition
CROSS JOIN? subqueries?
SELECT COUNT(*) AS table3Count FROM table3 WHERE someCondition

Редактировать:

Цель состоит в том, чтобы вернуть это:

+-------------+-------------+-------------+
| table1Count | table2Count | table3Count |
+-------------+-------------+-------------+
| 14          | 27          | 0           |
+-------------+-------------+-------------+
 Scott21 сент. 2010 г., 16:21
Какова твоя цель?
 egrunin21 сент. 2010 г., 16:22
Нужно больше подробностей - можете ли вы описать словами, что вы пытаетесь сделать?
 Pramendra Gupta21 сент. 2010 г., 16:31
попробуйте изменить внутреннее соединение на левое соединение

Ответы на вопрос(4)

Вы можете использовать UNION

  SELECT COUNT(*) FROM table1 WHERE someCondition
  UNION
  SELECT COUNT(*) FROM table2 WHERE someCondition
  UNION
  SELECT COUNT(*) FROM table3 WHERE someCondition
 Brendan Bullen21 сент. 2010 г., 17:19
Объединение выдаст результаты в отдельных строках, а не в столбцах. Результирующий набор, который ищет OP, представляет собой одну строку с 3 столбцами

Попробуйте перейти на:

SELECT 
    COUNT(table1.*) as t1,
    COUNT(table2.*) as t2,
    COUNT(table3.*) as t3 
FROM table1 
    LEFT JOIN tabel2 ON condition
    LEFT JOIN tabel3 ON condition
 ilija veselica05 июл. 2018 г., 14:05
Это не будет работать, потому что всеcounts вернет одно и то же число для всех трех таблиц, потому что он учитывает один и тот же набор результатов
 Hashan Kanchana01 мар. 2019 г., 05:58
Это не верно. если вы объедините несколько таблиц, как это, он будет умножать каждую запись и будет возвращать ложное число для каждой
 Eslam Sameh Ahmed28 нояб. 2015 г., 14:33
не сработает, так как нет связей между таблицами

Вы можете сделать это с помощью подзапросов, например:

select (SELECT COUNT(*) FROM table1 WHERE someCondition) as table1Count, 
       (SELECT COUNT(*) FROM table2 WHERE someCondition) as table2Count 
Решение Вопроса

Вы можете сделать это, используя подзапросы, один подзапрос для каждого tableCount:

SELECT
  (SELECT COUNT(*) FROM table1 WHERE someCondition) as table1Count, 
  (SELECT COUNT(*) FROM table2 WHERE someCondition) as table2Count,
  (SELECT COUNT(*) FROM table3 WHERE someCondition) as table3Count
 Yiannis Mpourkelis18 февр. 2017 г., 15:38
Я пришел сюда, пытаясь выяснить, как сделать то же самое в базе данных Firebird. Синтаксис немного отличается: SELECT * FROM (SELECT COUNT (*) AS table1Count FROM table1), (SELECT COUNT (*) AS table2Count FROM table2), (SELECT COUNT (*) AS table3Count FROM table3)
 Anirudha Gupta27 февр. 2015 г., 12:14
Я хочу считать 3 (количество) строк из первой и только одну строку из 2-го. Как я могу это сделать?

Ваш ответ на вопрос