0

我正在尝试输出最新的行但不显示任何重复项。我的表有一个唯一的 id (note_id) 和 issue_id,可以分配给多个 (note_ids);这样,每个条目都是唯一的,但可以与一个常见问题相关联。

这是我的代码:

$issueSelect = "SELECT DISTINCT issue_id FROM notes WHERE assigned = '$loginID' ORDER BY note_id ASC";
    $issueQuery = mysql_query($issueSelect);

然后我在while循环中有一个输出语句:

while ($issueResult = mysql_fetch_assoc($issueQuery)){
$issueID = $issueResult['issue_id'];
$issue = $issueResult['issue'];
      if ($issue == "open" or $issue == "assigned"){
                echo"<td align='right'><a href=\"note_details.php?note_click=$issueID\">$issueID</td>";

}

但是由于某种原因,我什么也没得到……当我把SELECT *它显示的东西时,它包括重复项(我不想要)。

我缺少的任何东西可能是为什么这不起作用?

4

4 回答 4

1

那么,您正在使用note_idand的复合键issue_id?您应该尝试使用该GROUP BY功能:

SELECT `issue_id`, `issue` FROM `notes` WHERE `assigned` = '$loginID' GROUP BY `note_id`, `issue_id` ORDER BY `note_id` ASC;

此外,mysql_*现在已弃用,您不应该真正使用它。查找 PDO 和mysqli.

于 2012-11-26T23:07:37.457 回答
0

你什么都得不到,因为$issueis null。您可以使用group by issue_id代替distinct,但它是非标准的,可能会或可能不会根据您的安装工作。

如果它不起作用,您可能需要使用select *然后过滤 PHP 中的重复项。

于 2012-11-26T23:05:40.160 回答
0

必须实际选择问题字段(在我想要显示的其他字段中......这就是我所做的:

$issueSelect = "SELECT DISTINCT issue_id, issue, reason, customer_id, order_id, return_id, author_id FROM notes WHERE assigned = '$loginID' ORDER BY note_id ASC";
    $issueQuery = mysql_query($issueSelect);
    while ($issueResult = mysql_fetch_assoc($issueQuery)){
$issueID = $issueResult['issue_id'];
        $issue = $issueResult['issue'];
        $assigned = $issueResult['assigned'];
        $openDate = $issueResult['date'];
        $closeDate = $issueResult['close_date'];
        $orderID = $issueResult['order_id'];
        $returnID = $issueResult['return_id'];
        $customerID = $issueResult['customer_id'];
        $authorID = $issueResult['author_id'];
        $reason = $issueResult['reason'];
}

感谢您的所有帮助...我会研究 POD 和 MySQLi

于 2012-11-27T00:04:23.380 回答
0

您原来的查询是:

SELECT DISTINCT issue_id FROM notes WHERE assigned = '$loginID' ORDER BY note_id ASC

我认为由于 ORDER BY 子句,这产生了多行。您正在隐式扩展选择列表note_id,然后排序,然后投影note_id,但是单个问题有多个注释,因此尽管有 DISTINCT,但您已经为单个问题返回了多行(因为 DISTINCT 已完成在订购之前)。

于 2012-11-27T00:20:01.843 回答