2013-10-24 21 views
1

我有一個所謂的「調查問卷」表,該表具有以下結構:MySQL的次數多列

 
user_id |  Q01  |  Q02  |  Q03   | 
00001  |  Yes  |  Yes   |  Yes   | 
00002  |  Yes  |  No   |  Yes   | 
00003  |  Yes  |  No   |  No   | 

我就怎麼算的「是」的數量爲每個用戶(USER_ID)搞清楚。例如:

 
00001 - 3 
00002 - 2 
00003 - 1 

我只是想顯示沒有用戶名的結果..

在此之前,我已存儲的是和否爲「1」和「0」,爲此我可以使用以下:

SELECT CONCAT(Q01+Q02+Q03) FROM `#__table` WHERE `id` = '[user_id]' 

我似乎無法找到它,因爲不再是一個整數的權利查詢..

+0

你搞砸了表結構。 –

+0

數據庫表不是電子表格。規範化你的數據。 – Strawberry

回答

1
SELECT (Q01 = 'Yes') + (Q02 = 'Yes') + (Q03 = 'Yes') 
FROM #__table 
WHERE id = '[user_id]' 
+0

你能告訴我如何在sql-server中做同樣的事嗎? –

+0

這是我找到的那個..簡單而簡單! – user2914019

0
SELECT if(Q01 = 'Yes',1,0) + if(Q02 = 'Yes',1,0) + if(Q03 = 'Yes',1,0) 
FROM #__table 
WHERE id = '[user_id]' 
0
SELECT sum(yes) 
FROM (
     (SELECT count(*) yes 
     FROM #__TABLE 
     WHERE Q01='yes' 
      OR Q02='yes' 
      OR Q03='yes' 
      AND user_id=00001) 
     UNION ALL 
     (SELECT count(*) yes 
     FROM #__TABLE 
     WHERE Q01='yes' 
      OR Q02='yes' 
      OR Q03='yes' 
      AND user_id=00002) 
     UNION ALL 
     (SELECT count(*) yes 
     FROM #__TABLE 
     WHERE Q01='yes' 
      OR Q02='yes' 
      OR Q03='yes' 
      AND user_id=00003)) AS tt; 

我認爲這將工作正常。