2014-01-14 45 views
0

我試着去計算只是用mysql的一列的最選擇價值「最選定值」,但我不知道如果這是可能的,或者如果我需要同時使用PHP ...計算列

所有的值都是整數rangin形式1至12,這是在前端和表中所做的選擇的ID(ID:表)看起來是這樣的:

id | value_1 (int) | value_2 (int) | value_3 (int) 

編輯:

有了這個,我可以獲得列'value_1'中最多的選擇:

SELECT value_1, count(*) total 
FROM table 
GROUP BY value_1 
ORDER BY total DESC 
LIMIT 1 

如何獲取樹列中所有最選定的值(value_1 | value_2 | value_3)在單個SQL語句中?


繼重複quiestion鏈接我也試着用這一點,但它返回一個錯誤:

select value_1, count(*) total 
from (
    select @r := if(total>@r,total,@r) maxcount, value_1, total 
    from (select @r:=0) initvars, (
     select value_1, count(*) total 
     from table 
     group by value_1 
    ) X) Y 
where total = @r 

MYSQL ERROR : #1140 - Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is illegal if there is no GROUP BY clause 
+0

感謝您的鏈接,不知道「模式平均」的意思,但現在很清楚了! 不過,我不知道如何做多列的句子。 – alez

回答

0

只是爲了澄清,通過這個後我設法做到這一點閱讀,但也使用PHP的用戶。這將是很好,只需一次MYSQL句子做,但我不能弄清楚如何做到這一點:

$array_sql = array("value_1", "value_2", "value_3"); 

//Loop 
foreach($array_sql as $val){ 
    $SQL = " 
    SELECT $val, count(*) total 
    FROM table 
    GROUP BY $val 
    ORDER BY total DESC 
    LIMIT 1 
    "; 

    ${'result_'.$val} = mysql_query($SQL) or die(mysql_error());//$result_mvp 

} 

//results for value_1 
$row_1 = mysql_fetch_array($result_value_1); 
$val1 = $row_1['total']; // Most selected option for value_1 

//results for value_2 
$row_2 = mysql_fetch_array($result_value_2); 
$val2 = $row_2['total']; // Most selected option for value_2 

//results for value_3 
$row_3 = mysql_fetch_array($result_value_3); 
$val3 = $row_3['total']; // Most selected option for value_3 
0
SELECT id, 
    COUNT(val1)As 'First Value', 
    COUNT(val2)As 'Second Value', 
    COUNT(val3)As 'Third Value' 
FROM alez 
GROUP BY id 
ORDER BY id DESC 

與選擇的第一將出現次數最多的ID。然後根據最多選擇的數字將它們從最高到最低排序。

+0

這似乎並沒有工作,我試圖做的是獲得每列最選定的值。 – alez