Ответ 1
SELECT (
SELECT COUNT(*)
FROM user_table
) AS tot_user,
(
SELECT COUNT(*)
FROM cat_table
) AS tot_cat,
(
SELECT COUNT(*)
FROM course_table
) AS tot_course
Я создаю отчет в php (mysql),
Пример:
`select count(id) as tot_user from user_table
select count(id) as tot_cat from cat_table
select count(id) as tot_course from course_table`
У меня есть 12 таблиц.
Могу ли я сделать это в одном запросе. Если бы я сделал? Процесс замедляется?
SELECT (
SELECT COUNT(*)
FROM user_table
) AS tot_user,
(
SELECT COUNT(*)
FROM cat_table
) AS tot_cat,
(
SELECT COUNT(*)
FROM course_table
) AS tot_course
Если вы используете таблицы MyISAM, самый быстрый способ напрямую запрашивает статистику:
select table_name, table_rows
from information_schema.tables
where
table_schema='databasename' and
table_name in ('user_table','cat_table','course_table')
Если у вас есть InnoDB, вам нужно запросить счет count(), поскольку сообщенное значение в файле информации_схема неверно.
Вы можете, безусловно, выбрать a Select Agregation, как постулированный Ben James, однако это приведет к представлению с таким количеством столбцов, как у вас есть таблицы. Альтернативный метод может быть следующим:
SELECT COUNT(user_table.id) AS TableCount,'user_table' AS TableSource FROM user_table
UNION SELECT COUNT(cat_table.id) AS TableCount,'cat_table' AS TableSource FROM cat_table
UNION SELECT COUNT(course_table.id) AS TableCount, 'course_table' AS TableSource From course_table;
Хорошая вещь в подобном утверждении заключается в том, что вы можете явно писать утверждения Союза и генерировать представление или создавать временную таблицу для хранения значений, которые последовательно добавляются из календаря Proc, используя переменные вместо имен таблиц. Я больше склоняюсь к последнему, но это зависит от личных предпочтений и применения. Если вы уверены, что таблицы никогда не будут меняться, вам нужны данные в формате одной строки, и вы не будете добавлять таблицы. придерживаться решения Бена Джеймса. В противном случае я бы посоветовал гибкость, вы всегда можете взломать структуру перекрестных вкладок.
select RTRIM(A.FIELD) from SCHEMA.TABLE A where RTRIM(A.FIELD) = ('10544175A')
UNION
select RTRIM(A.FIELD) from SCHEMA.TABLE A where RTRIM(A.FIELD) = ('10328189B')
UNION
select RTRIM(A.FIELD) from SCHEMA.TABLE A where RTRIM(A.FIELD) = ('103498732H')
Я знаю, что это старый стек, но я опубликую этот случай выбора нескольких SQL
SELECT bp.bizid, bp.usrid, bp.website,
ROUND((SELECT SUM(rating) FROM ratings WHERE bizid=bp.bizid)/(SELECT COUNT(*) FROM ratings WHERE bizid=bp.bizid), 1) AS 'ratings',
(SELECT COUNT(*) FROM bzreviews WHERE bizid=bp.bizid) AS 'ttlreviews',
bp.phoneno, als.bizname,
(SELECT COUNT(*) FROM endorsment WHERE bizid=bp.bizid) AS 'endorses'
, als.imgname, bp.'location', bp.'ownership',
(SELECT COUNT(*) FROM follows WHERE bizid=bp.bizid) AS 'followers',
bp.categories, bp.openhours, bp.bizdecri FROM bizprofile AS bp
INNER JOIN alluser AS als ON bp.usrid=als.userid
WHERE als.usertype='Business'
SELECT t1.credit,
t2.debit
FROM (SELECT Sum(c.total_amount) AS credit
FROM credit c
WHERE c.status = "a") AS t1,
(SELECT Sum(d.total_amount) AS debit
FROM debit d
WHERE d.status = "a") AS t2