我是否可以运行一个mysql查询来输出数据' ungrouped'并且'按'分组

时间:2017-02-24 14:52:18

标签: php mysql select group-by

如何运行一个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;
&#13;
&#13;

提前谢谢。

塞尔

2 个答案:

答案 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,它会给出不同的作者名称。