我有这个表设置。我正在努力弄清楚如何设置选择以使我的foreach循环遍历结果并显示每个card_id的正确pest_counts和pest_names。我使用left_x和top_y将card_id放在地图上,但我希望每个card_id只显示pest_count和pest_name。我可以使用每个card_ id显示所有或一个计数,但我无法获得与该card_id相关联的每个pest_counts和pest_names。 这是我的表
pest_name pest_count card_id card_type top_y left_x scout_date
Aphids 2 1 yellcard 652 703 3/13/2014 15:59:54
Thrips 4 1 yellcard 652 703 3/13/2014 15:59:54
Thrips 2 2 bluecard 754 707 3/13/2014 15:59:54
Thrips 1 3 yellcard 531 616 3/13/2014 15:59:54
Thrips 1 5 yellcard 80 613 3/13/2014 15:59:54
这是我最终想要的每张牌上的每个pest_name和pest_count。 这将是card_id 1
2 Aphids
4 Thrips
这是我尝试过的众多选择之一。
$stmt = $pdo->prepare("SELECT card_id,card_type,top_y,left_x,pest_count,pest_name,scout_date FROM scout_logpestnum WHERE scout_date ='2014-03-13 15:59:54' GROUP BY card_id");
$stmt->execute();
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
这是html。
<?php
foreach($result as $obj) {
?>
<div id="input<?= htmlspecialchars($obj['card_id']) ?><?= htmlspecialchars($obj['pest_name']) ?>" class="input stickyinput"><?= htmlspecialchars($obj['pest_count']) ?></div>
<div class="pestnameholder">
<?php
echo'<div class="pestname '.$obj['pest_name'].'">'.$obj['pest_name'].'</div>' ;
echo '</div>';
}
答案 0 :(得分:1)
您可以使用group_concat
和concat
作为害虫名称和计数,然后按所有其他属性进行分组。这允许您为pest_name和pest_count提供单个标签:
select
group_concat(concat(pest_count,' ',pest_name) separator '<br/>') pests,
card_id,
card_type,
top_y,
left_x,
scout_date
from scout_logpestnum
group by
card_id,
card_type,
top_y,
left_x,
scout_date