2014-01-22 75 views
0

此刻「matrix_mct_versions」是一個包含73個條目的表。當我運行這個查詢時,「version_count」總是返回73,即完整的行數。當我自己運行子選擇查詢時,我根據發送的com_ID參數獲得了真正的計數。我看不出我在做什麼錯了..任何人都可以幫忙嗎?mysql子查詢計數返回gloabl計數並忽略其中

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

@約翰。 。 。有瘋狂的方法。 MySQL在這裏解釋了子查詢的範圍規則(http://dev.mysql.com/doc/refman/5.7/en/correlated-subqueries.html)。 –

+0

非常感謝,非常有幫助! – John