我有一個包含一些行的資料庫表...

...通常在列中會出現多次重復的專案option_name。如您所見,Fish、Cat、Bird 和 Snake 的實體不止一個。這是預期的,很好。
所以我像這樣在前端回傳這些行......
$poll_id = 211;
$poll_table = $wpdb->prefix . "the_votes";
$poll_items = $wpdb->get_results("
SELECT *
FROM $poll_table
WHERE poll_id = $poll_id
");
echo '<ul>';
foreach ( $poll_items as $poll_item ) {
echo '<li>' . $poll_item->option_name . '</li>';
}
echo '</ul>';
...這將顯示如下:
- 貓
- 魚
- 鳥
- 貓
- 蛇
- 鳥
- 貓
- 貓
- 魚
- 魚
- 魚
- 魚
- 魚
- 魚
- 魚
- 蛇
- 貓
但我真正需要的是做到這一點,以便沒有回傳重復項,并且每個旁邊都有一個計數。所以它應該顯示如下:
- 貓 (5)
- 魚 (8)
- 鳥 (2)
- 蛇 (2)
提前致謝。
uj5u.com熱心網友回復:
您應該使用group by:
select option_name, count(id) as count from polls group by option_name;
您的代碼應如下所示:
$poll_id = 211
$poll_table = $wpdb->prefix . "the_votes";
$poll_items = $wpdb->get_results("
SELECT count(id) as count, option_name
FROM $poll_table
WHERE poll_id = $poll_id
GROUP BY option_name
");
echo '<ul>';
foreach ( $poll_items as $poll_item ) {
echo '<li>' . $poll_item->option_name . '(' . $poll_item->count . ')</li>';
}
echo '</ul>';
uj5u.com熱心網友回復:
SELECT * FROM $poll_table WHERE poll_id = $poll_id group by poll_id
此方法用于過濾重復值
uj5u.com熱心網友回復:
在 SQL 中,SELECT column_name, count(column_name) FROM $poll_table WHERE poll_id = $poll_id group by poll_id。您可以使用他們的計數過濾并獲取 id。您可以使用列名,而不是使用 *。
在 jquery 中,您可以使用$.unique(arr)獲取唯一元素,并且可以遞增每個陣列值并獲取每個值的確切計數。
uj5u.com熱心網友回復:
使用 MySQL 查詢本身執行此操作:
SELECT *, COUNT(option_name) AS option_count FROM $table WHERE poll_id = $poll_id GROUP BY option_name
這將完全按照您的要求回傳,您可以回圈顯示結果。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/434142.html
上一篇:向關聯陣列中的現有鍵添加值
下一篇:Cookie值重復
