[英]How I do this with mysql COUNT()
我正在使用此UNION查詢來計算查詢提供的記錄。
這是我的查詢:
// Count the number of records:
$q = "SELECT COUNT( DISTINCT i.institute_id)
FROM institutes AS i
INNER JOIN institute_category_subject AS ics
ON ics.institute_id = i.institute_id
INNER JOIN subjects AS s
ON ics.subject_id = s.subject_id
WHERE s.subject_name LIKE '%mathematics%'
UNION
SELECT COUNT( DISTINCT t.tutor_id)
FROM tutors AS t
INNER JOIN tutor_category_subject AS tcs
ON tcs.tutor_id = t.tutor_id
INNER JOIN subjects AS s
ON tcs.subject_id = s.subject_id
WHERE s.subject_name LIKE '%mathematics%'";
執行此查詢后,我得到以下結果作為輸出。
+---------------------------------+
| COUNT( DISTINCT i.institute_id) |
+---------------------------------+
| 3 |
| 2 |
+---------------------------------+
這不是我的預期結果。 我需要通過添加3 + 2得到5作為結果。添加兩個select查詢。
有人可以告訴我如何解決嗎?
想你。
用子查詢包裝UNION
ed查詢
SELECT SUM(total) totalSum
FROM
(
SELECT COUNT( DISTINCT i.institute_id) total
FROM institutes AS i
INNER JOIN institute_category_subject AS ics
ON ics.institute_id = i.institute_id
INNER JOIN subjects AS s
ON ics.subject_id = s.subject_id
WHERE s.subject_name LIKE '%mathematics%'
UNION
SELECT COUNT( DISTINCT t.tutor_id) total
FROM tutors AS t
INNER JOIN tutor_category_subject AS tcs
ON tcs.tutor_id = t.tutor_id
INNER JOIN subjects AS s
ON tcs.subject_id = s.subject_id
WHERE s.subject_name LIKE '%mathematics%'
) s
由於您要對行進行計數,因此不需要額外的總和+計數+計數開銷。
只要這樣做:
$q = "SELECT COUNT(*) FROM (
SELECT DISTINCT i.institute_id
FROM institutes AS i
INNER JOIN institute_category_subject AS ics
ON ics.institute_id = i.institute_id
INNER JOIN subjects AS s
ON ics.subject_id = s.subject_id
WHERE s.subject_name LIKE '%mathematics%'
UNION ALL
SELECT DISTINCT t.tutor_id
FROM tutors AS t
INNER JOIN tutor_category_subject AS tcs
ON tcs.tutor_id = t.tutor_id
INNER JOIN subjects AS s
ON tcs.subject_id = s.subject_id
WHERE s.subject_name LIKE '%mathematics%'
) mysubquery";
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.