2014-01-22 6 views
0

На данный момент «matrix_mct_versions» представляет собой таблицу с 73 элементами. Когда я запускаю этот запрос, «version_count» всегда возвращает 73, то есть полное количество строк. Когда я запускаю запрос sub select самостоятельно, я получаю реальный счет в соответствии с отправленным параметром com_ID. Я не вижу, что я делаю с этим неправильно. Может ли кто-нибудь помочь?mysql sub query count return gloabl count и игнорирование где

SELECT 
    a_ID as com_ID, 
    option_number, 
    comment, 
    word_count, 
    gender, 
    sample, 
    (
     SELECT 
      count(a_ID) 
     FROM 
      matrix_mct_versions 
     WHERE 
      com_ID = com_ID 
    ) as version_count 
FROM 
    matrix_mct 
WHERE 
    attribute_number = :attribute_number AND 
    grade_number  = :grade_number AND 
    attribute_type = :attribute_type 
ORDER BY 
    option_number 

Возвращает результаты, как это:

[0] => Array 
       (
        [com_ID] => 678 
        [option_number] => 1 
        [comment] => TODO primary function missing for controller y 
        [word_count] => 7 
        [gender] => 2 
        [sample] => 0 
        [version_count] => 73 
       ) 

      [1] => Array 
       (
        [com_ID] => 679 
        [option_number] => 2 
        [comment] => TODO make this green 
        [word_count] => 4 
        [gender] => 2 
        [sample] => 0 
        [version_count] => 73 
       ) 

      [2] => Array 
       (
        [com_ID] => 680 
        [option_number] => 3 
        [comment] => TODO make this better 
        [word_count] => 4 
        [gender] => 2 
        [sample] => 0 
        [version_count] => 73 
       ) 

ответ

2

По крайней мере одна проблема заключается в том ваш подзапрос. Это не коррелирует. Я думаю, что вы имели в виду:

(SELECT count(a_ID) 
FROM matrix_mct_versions 
WHERE matrix_mct_versions.com_ID = matrix_mct.com_ID 
) as version_count 
+0

аааа .. я подумал, что если я объявил «a_id как com_ID,» что com_ID бы как проплывающие переменную вниз запрос для подзапрос использовать .. – John

+0

@John. , , Существует метод безумия. MySQL объясняет свои правила для подзапросов здесь (http://dev.mysql.com/doc/refman/5.7/en/correlated-subqueries.html). –

+0

Спасибо, очень полезно! – John