2017-08-31 29 views
-1

這可能有點令人困惑,但讓我解釋一下。選擇包含同一行中定義列的db列

所以我有這個DB

ID | username | status 
1 | Bob  | On 
2 | James  | On 
3 | Jack  | Off 
4 | Bob  | Off 
5 | Arthur | On 

我如何可以重複所有,其中包括對狀態的名字?我想是這樣

$reponse = $pdo->query('SELECT username, COUNT(1) as CNT FROM users GROUP BY status;'); 
$donnees = $reponse->fetch(); 
foreach ($reponse as $key => $value) { 
    echo '<li><a href="#"><i class="fa fa-circle-o"> '.$value['username'].'</i></a></li>'; 
} 

預期結果

回聲: 鮑勃 詹姆斯 亞瑟

但只打印出第一個ID是誰離線(在這種情況下,傑克)。

謝謝

PS:我在學習PHP/MySQL的在這一刻讓我覺得有點失落,如果您共享答案,請解釋爲什麼你用你的代碼,並在那裏我錯了謝謝。

+0

爲什麼你的用戶表中有重複的條目?這些是同一個用戶嗎?或具有相同名稱的不同用戶?否則,它只是一個在SQL語句中使用WHWERE子句的情況:'select name from users where status ='On'' –

+0

@AlivetoDie它沒有我的db用戶名而不是名字,對此表示遺憾 –

+0

預期結果是什麼? –

回答

1

按照您預期的結果,你不需要一個group by這裏:

username  
---------- 
Bob  
James 
James 

如果你想指望他們:

$reponse = $pdo->query('SELECT username FROM users WHERE status="On"'); 

因爲這會給你的結果

$reponse = $pdo->query('SELECT username,count(1) as cnt FROM users WHERE status="On" group by username'); 

username cnt 
---------------- 
Bob  1 
James 2 
+0

只有最後一個ID在線顯示,在這種情況下,第二個詹姆斯 –

+0

@DiogoJesus:在預期的結果你評論下的問題,這是鮑勃,詹姆斯和詹姆斯。爲了澄清,請編輯您的問題並添加預期結果。 –

+0

@MarkBaker每當我在'報價'內更改爲'',否則頁面無法加載,只是出現錯誤 –

0
$reponse = $pdo->query('SELECT username, COUNT(1) as CNT FROM users WHERE status='On;'); 
$donnees = $reponse->fetch(); 
foreach ($reponse as $key => $value) { 
echo '<li><a href="#"><i class="fa fa-circle-o"> '.$value['username'].'</i></a></li>'; 
} 

通過,然後再排序關機狀態上地位命令可以將數據分組嘗試......集團。

+0

沒有錯誤在哪裏顯示,但沒有出現在屏幕上要麼是 –

+0

狀態真的是'開'還是'開'? –

+0

只是,但我沒有刪除「;」並仍然不能正常工作 –

相關問題