如何运行一个mysql查询来输出数据' ungrouped'并且'按'分组用户名?
我有一个查询,提取与用户帖子相关的所有数据。在while循环中,我正在检索用户的名称并将其输入到选择/选项下拉列表中。下面它实际上是输出个人帖子 - 用户名和帖子。
这一切都正常,但例外情况是,如果用户有多个帖子,他/她的名字在下拉列表中重复。如果我在查询中使用GROUP BY子句,那么它将不会显示所有帖子 - 每个用户只有一个。
我无法运行单独的查询(或者至少我找不到解决方案),因为我有分页的查询设置,因此在下拉列表上运行单独的查询只会显示所有用户,我只想显示当前显示在页面上的那些。
有没有办法输出数据和未组合的数据?并且'按'分组在同一个查询中?
这是我想要的输出的一个例子。 注意:用户Michael Smith有2个帖子,但他的名字只出现在下拉列表中一次。
<h3>Posts Filter</h3>
<select>
<option>Michael Smith</option>
<option>James Hendrickson</option>
<option>Lucy Michaels</option>
</select>
<br>
<br>
<hr>
<div style="width:45%;height:200px;float:left;border:1px solid #ddd;padding:10px;margin:2.5%;box-sizing:border-box;">
<h2>Michael Smith</h2>
<p>Bacon ipsum dolor amet short ribs kevin ribeye meatball filet mignon swine pork loin spare ribs, pork belly cow tenderloin venison...</p>
</div>
<div style="width:45%;height:200px;float:left;border:1px solid #ddd;padding:10px;margin:2.5%;box-sizing:border-box;">
<h2>James Hendrickson</h2>
<p>Bacon ipsum dolor amet short ribs kevin ribeye meatball filet mignon swine pork loin spare ribs, pork belly cow tenderloin venison...</p>
</div>
<div style="width:45%;height:200px;float:left;border:1px solid #ddd;padding:10px;margin:2.5%;box-sizing:border-box;">
<h2>Michael Smith</h2>
<p>Bacon ipsum dolor amet short ribs kevin ribeye meatball filet mignon swine pork loin spare ribs, pork belly cow tenderloin venison...</p>
</div>
<div style="width:45%;height:200px;float:left;border:1px solid #ddd;padding:10px;margin:2.5%;box-sizing:border-box;">
<h2>Lucy Michaels</h2>
<p>Bacon ipsum dolor amet short ribs kevin ribeye meatball filet mignon swine pork loin spare ribs, pork belly cow tenderloin venison...</p>
</div>
<hr>
<br>
<span style="margin: 0 10px 0 0;width:30px;height;30px;line-height:30px;text-align:center;display:block;float:left;color:#ddd;background:#000;">1</span>
<span style="margin: 0 10px 0 0;width:30px;height;30px;line-height:30px;text-align:center;display:block;float:left;color:#000;background:#ddd;">2</span>
<span style="margin: 0 10px 0 0;width:30px;height;30px;line-height:30px;text-align:center;display:block;float:left;color:#000;background:#ddd;">3</span>
<span style="margin: 0 10px 0 0;width:30px;height;30px;line-height:30px;text-align:center;display:block;float:left;color:#000;background:#ddd;">4</span>
<span style="margin: 0 10px 0 0;width:30px;height;30px;line-height:30px;text-align:center;display:block;float:left;color:#000;background:#ddd;">5</span>
<br>
<br>
&#13;
提前谢谢。
塞尔
答案 0 :(得分:1)
这就是我要做的事。
运行未分组的查询。然后'预先组装'下拉列表的值。像这样的东西(为了这个例子的目的,你的查询结果被称为$results
):
$dropdown = array();
foreach($results as $r)
{
$dropdown[] = $r['user_name'];
}
$dropdown = array_unique($dropdown);
然后进入你的选择:
<select>
<?php foreach($dropdown as $value): ?>
<option><?php echo $value; ?></option>
<?php endforeach; ?>
</select>
这不是最优雅的解决方案,但它应该适合你。
答案 1 :(得分:0)
最好在查询中使用distinct,它会给出不同的作者名称。