В настоящее время я работаю с использованием подзапроса, но по мере того как БД растет, это станет НИЗКОЙ неэффективной. Мне интересно, есть ли более эффективный способ сделать то, что мне нужно, чтобы обойтись без подзапросов?MySQL - многострочная сумма без подзапроса
мне нужно иметь мой последний выход выглядеть следующим образом:
Question, Answer, Responses, Charts included in Response Count
Did this work?, N/A, 26, 30
Did this work?, Yes, 4, 30
Это мой текущий запрос:
SELECT
bq_text,
ba_a,
bq_id,
COUNT(ba_a) AS ba_aC,
(SELECT COUNT(*) FROM board_done_sheet WHERE sd_b_id = bs.bs_id AND sd_sub = 1) AS sd_chartnumC
FROM board_done_sheet AS sh
LEFT JOIN board_done bd
ON (bd.bd_id = sh.sd_bd_id)
LEFT JOIN boardsubs bs
ON (bd.bd_b_id = bs.bs_id)
LEFT JOIN b_q_answers ba
ON (sh.sd_s_id = ba.ba_s_id)
LEFT JOIN bsquestions bq
ON (bq.bq_id = ba.ba_q_id)
LEFT JOIN multiples m
ON (ba.ba_m_id = m.m_id)
LEFT JOIN users u
ON (u.us_id = bd.bd_d_id)
LEFT JOIN profiles p
ON (p.p_u_id = bd.bd_d_id)
LEFT JOIN users rev
ON (rev.us_id = bd.bd_rev)
WHERE sd_sub = '1' AND bq_text <> 'Date' AND bq_id = 380
GROUP BY bs_id, bq_text, ba_a
Это прекрасно работает, проблема в том, что приходится использовать вложенные запросы, которые по прошествии времени станет менее эффективным.
Мне просто интересно, есть ли более эффективный способ сделать это суммированное поле без него.
Спасибо, я попробую сейчас. К счастью, у меня есть индексы на всех столбцах, которые использовались для соединения, и т. Д. Поэтому это должно поддерживать его относительно живым :) – jfreak53
Я получаю эту ошибку: 'Неизвестный столбец 'bs.bs_id' in 'where clause'' – jfreak53
Я неправильно понял цель положения SELECT COUNT (*); см. переработанный подзапрос. Конечно, у меня нет ваших данных, поэтому я не могу отлаживать эти запросы. –