我正在尝试输出最近的行,但没有显示任何重复行。我的表有一个唯一的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 *
显示出来的东西,但它包含了重复项(我不想要)。
我遗失的任何东西可能是为什么这不起作用?
答案 0 :(得分:1)
那么,您使用的是note_id
和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
。
答案 1 :(得分:0)
由于$issue
为null
,您无法获得任何结果。您可以使用group by issue_id
代替distinct
,但它是非标准的,可能会也可能不会根据您的安装而有效。
如果它不起作用,您可能需要使用select *
,然后在PHP中过滤重复项。
答案 2 :(得分: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&amp; MySQLi
答案 3 :(得分:0)
您的原始查询是:
SELECT DISTINCT issue_id FROM notes WHERE assigned = '$loginID' ORDER BY note_id ASC
我认为由于ORDER BY子句,这会产生多行。您隐含地使用note_id
扩展选择列表,然后排序,然后将note_id
投射出去,但是针对单个问题有多个注释,因此您有多个行被返回尽管有DISTINCT(因为DISTINCT在ORDER BY之前完成),因此单个问题。