2016-01-15 68 views
-3

我有一個頁面詢問用戶關於某個主題的意見。然後他們的回答保存在一張表格中。我想要做的是檢查有多少用戶選擇一個選項1,2,3和4.將多個SQL Server查詢轉換爲一個

我現在有多個T-SQL查詢成功運行,但我相信有一個簡化版本的代碼我已經寫了。如果有人能夠將我的查詢簡化爲單個查詢,我將不勝感激。謝謝。

這裏是在數據庫表中的數據的樣本
enter image description here

$sql4 = "SELECT COUNT(CO) FROM GnAppItms WHERE CO='1' AND MountID='".$mountID."'"; 
$stmt4 = sqlsrv_query($conn2, $sql4); 
$row4 = sqlsrv_fetch_array($stmt4); 

$sql5="SELECT COUNT(CO) FROM GnAppItms WHERE CO='2' AND MountID='".$mountID."'"; 
$stmt5=sqlsrv_query($conn2,$sql5); 
$row5=sqlsrv_fetch_array($stmt5); 

$sql6="SELECT COUNT(CO) FROM GnAppItms WHERE CO='3' AND MountID='".$mountID."'"; 
$stmt6=sqlsrv_query($conn2,$sql6); 
$row6=sqlsrv_fetch_array($stmt6); 

$sql7="SELECT COUNT(CO) FROM GnAppItms WHERE CO='4' AND MountID='".$mountID."'"; 
$stmt7=sqlsrv_query($conn2,$sql7); 
$row7=sqlsrv_fetch_array($stmt7); 
+2

'SELECT DISTINCT CO,COUNT(*)over(PARTITION BY CO)FROM GnAppItms WHERE CO in('1','2' '3','4')和MountID ='「。$ mountID。」'''應該這樣做... – CactusCake

+1

如果你喜歡谷歌並且瞭解它,也可以用GROUP BY子句完成基本方法。 –

+0

@JoeMalpass我試過你的答案,它爲$ row [0]工作,因此選項1只有一個人選擇該選項。但對於行[3]這是選項4與兩個人選擇該選項,它返回空.... –

回答

0

您可以通過使用組在SQL Server做

例如:

create table a 
(id int, 
mountid nvarchar(100), 
co int, 
) 

insert into a values (1,'aa',1) 
insert into a values (2,'aa',2) 
insert into a values (3,'aa',1) 
insert into a values (4,'aa',2) 
insert into a values (5,'aa',3) 

查詢

select co,count(co)as countofco from a 
where mountid='aa' 
group by 
co 

結果

co countofco 
1 2 
2 2 
3 1 

注:SQL注入當心,當你寫一個SQL查詢,因此請務必使用參數化查詢。您可以編輯上面的示例代碼並將其作爲參數化查詢以防止SQL注入

+0

感謝@Arunprasanth KV非常感謝您的幫助。請我可以將每個結果集存儲到一個變量中,因爲我想將其顯示在格式化的表格中 –

+0

@BigPee是的,您可以這樣做,使用哪種語言? C#,VB,PHP哪一個? –

+0

謝謝...我使用php –