这就是我应该如何使用distinct来再次下载内容。
这里的图片VISR下载内容3次,但我只想要它总共1次
问题在于它没有选择所有这些问题,但我只希望它只选择一个时间,这意味着它只需要按标题下载一次并同时下载用户名。
$sql = "SELECT DISTINCT fms_bruger.fornavn, fms_bruger.efternavn, fms_opslagpm.id, fms_opslagpm.title FROM fms_bruger INNER JOIN fms_opslagpm ON fms_bruger.id=fms_opslagpm.fra_id WHERE fms_opslagpm.til_id = ? ORDER BY fms_opslagpm.datotid DESC";
if ($stmt = $this->mysqli->prepare($sql)) {
$stmt->bind_param('i', $id);
$id = $_SESSION["id"];
$stmt->execute();
$stmt->bind_result($fornavn, $efternavn, $id, $title);
while ($stmt->fetch()) {
?>
<tr class="postbox">
<td class="beskedinfo">
<p><?php echo $fornavn . " " . $efternavn;?></p>
</td>
<td>
<a href="#"><?php echo $title;?></a>
</td>
<td>
<a href="#">Slet</a>
</td>
</tr>
<?php
}
$stmt->close();
}
答案 0 :(得分:1)
您需要使用GROUP BY而不是DISTINCT来获取标题字段的分组。
SELECT fms_bruger.fornavn, fms_bruger.efternavn, fms_opslagpm.id, fms_opslagpm.title
FROM fms_bruger
INNER JOIN fms_opslagpm ON fms_bruger.id=fms_opslagpm.fra_id
WHERE fms_opslagpm.til_id = ?
GROUP BY fms_opslagpm.title
ORDER BY fms_opslagpm.datotid DESC
答案 1 :(得分:0)
SELECT DISTINCT
完全按照其说法执行:它选择不同的行。
您在列中包含id
。我非常确定ID是唯一的,因此所有行都是DISTINCT
。
考虑删除DISTINCT
关键字并添加GROUP BY `fms_bruger`.`title`
子句。这是SQL标准的扩展,它将为每个唯一标题返回一个任意行。