2016-02-21 16 views
0

所以我現在有一個8列的MySQL表格,這個問題看起來有點像這個,用於收集響應。每個問題有一個回答,但次數從1到1不等。:有沒有什麼辦法可以使用更少的「mysql_num_rows」函數並獲得相同的結果?

ID | q1-q8 |時間戳

我現在正在嘗試創建彙總表,分解每個問題的答案。

我在MySQL中玩了一下count()GROUP BY,但沒有真正成功。於是,我開始着手這個手工的方式,看上去有點像這樣:

<?php 
//connect to db 


$count1_1 = mysql_num_rows(mysql_query("SELECT q1 FROM table WHERE q1=1")); 
$count1_2 = mysql_num_rows(mysql_query("SELECT q1 FROM table WHERE q1=2")); 
$count1_3 = mysql_num_rows(mysql_query("SELECT q1 FROM table WHERE q1=3")); 
$count1_4 = mysql_num_rows(mysql_query("SELECT q1 FROM table WHERE q1=4")); 
$count1_5 = mysql_num_rows(mysql_query("SELECT q1 FROM table WHERE q1=5")); 

$count2_1 = mysql_num_rows(mysql_query("SELECT q2 FROM table WHERE q2=1")); 
$count2_2 = mysql_num_rows(mysql_query("SELECT q2 FROM table WHERE q2=2")); 
$count2_3 = mysql_num_rows(mysql_query("SELECT q2 FROM table WHERE q2=3")); 
$count2_4 = mysql_num_rows(mysql_query("SELECT q2 FROM table WHERE q2=4")); 
$count2_5 = mysql_num_rows(mysql_query("SELECT q2 FROM table WHERE q2=5")); 

$count3_1 = mysql_num_rows(mysql_query("SELECT q3 FROM table WHERE q3=1")); 
$count3_2 = mysql_num_rows(mysql_query("SELECT q3 FROM table WHERE q3=2")); 
$count3_3 = mysql_num_rows(mysql_query("SELECT q3 FROM table WHERE q3=3")); 
$count3_4 = mysql_num_rows(mysql_query("SELECT q3 FROM table WHERE q3=4")); 
$count3_5 = mysql_num_rows(mysql_query("SELECT q3 FROM table WHERE q3=5")); 

$count4_1 = mysql_num_rows(mysql_query("SELECT q4 FROM table WHERE q4=1")); 
$count4_2 = mysql_num_rows(mysql_query("SELECT q4 FROM table WHERE q4=2")); 
$count4_3 = mysql_num_rows(mysql_query("SELECT q4 FROM table WHERE q4=3")); 
$count4_4 = mysql_num_rows(mysql_query("SELECT q4 FROM table WHERE q4=4")); 
$count4_5 = mysql_num_rows(mysql_query("SELECT q4 FROM table WHERE q4=5")); 

$count5_1 = mysql_num_rows(mysql_query("SELECT q5 FROM table WHERE q5=1")); 
$count5_2 = mysql_num_rows(mysql_query("SELECT q5 FROM table WHERE q5=2")); 
$count5_3 = mysql_num_rows(mysql_query("SELECT q5 FROM table WHERE q5=3")); 
$count5_4 = mysql_num_rows(mysql_query("SELECT q5 FROM table WHERE q5=4")); 
$count5_5 = mysql_num_rows(mysql_query("SELECT q5 FROM table WHERE q5=5")); 

$count6_1 = mysql_num_rows(mysql_query("SELECT q6 FROM table WHERE q6=1")); 
$count6_2 = mysql_num_rows(mysql_query("SELECT q6 FROM table WHERE q6=2")); 
$count6_3 = mysql_num_rows(mysql_query("SELECT q6 FROM table WHERE q6=3")); 
$count6_4 = mysql_num_rows(mysql_query("SELECT q6 FROM table WHERE q6=4")); 
$count6_5 = mysql_num_rows(mysql_query("SELECT q6 FROM table WHERE q6=5")); 

$count7_1 = mysql_num_rows(mysql_query("SELECT q7 FROM table WHERE q7=1")); 
$count7_2 = mysql_num_rows(mysql_query("SELECT q7 FROM table WHERE q7=2")); 
$count7_3 = mysql_num_rows(mysql_query("SELECT q7 FROM table WHERE q7=3")); 
$count7_4 = mysql_num_rows(mysql_query("SELECT q7 FROM table WHERE q7=4")); 
$count7_5 = mysql_num_rows(mysql_query("SELECT q7 FROM table WHERE q7=5")); 

$count8_1 = mysql_num_rows(mysql_query("SELECT q8 FROM table WHERE q8=1")); 
$count8_2 = mysql_num_rows(mysql_query("SELECT q8 FROM table WHERE q8=2")); 
$count8_3 = mysql_num_rows(mysql_query("SELECT q8 FROM table WHERE q8=3")); 
$count8_4 = mysql_num_rows(mysql_query("SELECT q8 FROM table WHERE q8=4")); 
$count8_5 = mysql_num_rows(mysql_query("SELECT q8 FROM table WHERE q8=5")); 



echo "Q1_1 $count1_1 <br>"; 
echo "Q1_2 $count1_2 <br>"; 
echo "Q1_3 $count1_3 <br>"; 
echo "Q1_4 $count1_4 <br>"; 
echo "Q1_5 $count1_5 <br>"; 
echo "<hr />"; 
echo "Q2_1 $count2_1 <br>"; 
echo "Q2_2 $count2_2 <br>"; 
echo "Q2_3 $count2_3 <br>"; 
echo "Q2_4 $count2_4 <br>"; 
echo "Q2_5 $count2_5 <br>"; 
echo "<hr />"; 
echo "Q3_1 $count3_1 <br>"; 
echo "Q3_2 $count3_2 <br>"; 
echo "Q3_3 $count3_3 <br>"; 
echo "Q3_4 $count3_4 <br>"; 
echo "Q3_5 $count3_5 <br>"; 
echo "<hr />"; 
echo "Q4_1 $count4_1 <br>"; 
echo "Q4_2 $count4_2 <br>"; 
echo "Q4_3 $count4_3 <br>"; 
echo "Q4_4 $count4_4 <br>"; 
echo "Q4_5 $count4_5 <br>"; 
echo "<hr />"; 
echo "Q6_1 $count6_1 <br>"; 
echo "Q6_2 $count6_2 <br>"; 
echo "Q6_3 $count6_3 <br>"; 
echo "Q6_4 $count6_4 <br>"; 
echo "Q6_5 $count6_5 <br>"; 
echo "<hr />"; 
echo "Q7_1 $count7_1 <br>"; 
echo "Q7_2 $count7_2 <br>"; 
echo "Q7_3 $count7_3 <br>"; 
echo "Q7_4 $count7_4 <br>"; 
echo "Q7_5 $count7_5 <br>"; 
echo "<hr />"; 
echo "Q8_1 $count8_1 <br>"; 
echo "Q8_2 $count8_2 <br>"; 
echo "Q8_3 $count8_3 <br>"; 
echo "Q8_4 $count8_4 <br>"; 
echo "Q8_5 $count8_5 <br>"; 
echo "<hr />"; 
    ?> 

正如你所看到的,這幾乎是100的重複的代碼行最有可能可以更好地完成。不過,我有點卡住了我如何才能做到這一點,並希望聽到您的想法。

+0

即使孤單這個答案。我覺得你的數據庫可以設計得更好。你能和我分享它的目的嗎? – CodeGodie

+0

當然,我建立它從一系列用戶生成的調查中收集數據。用戶可以爲同一組預定義問題創建自己的「調查」,並將所有數據收集到一個表中。該表缺少userid列以避免混淆。 – Codingmedic

+0

好的,在這種情況下,那麼你的數據庫結構是好的。只需要確定。你有沒有嘗試下面的答案? – CodeGodie

回答

0

咦?你應該使用這個邏輯的數據庫。請在數據庫

所以,你的第一個五年查詢可以被替換爲:

SELECT SUM(q1 = 1) as q1, SUM(q1 = 2) as q2, SUM(q1 = 3) as q3, 
     SUM(q1 = 4) as q4, SUM(q1 = 5) as q5 
FROM table ; 

或者,如果你喜歡:

SELECT q1, COUNT(*) as cnt 
FROM table 
GROUP BY q1; 
相關問題