我试图为我的语句迭代到的每一行获取一个单行输出,但对于它找到的每个“票证”,它会输出 100 次。在当前 SQL 队列中,只有 4 个可能的票证符合条件。$ticketIdQuery = pg_query($db, "SELECT ticket.assignee_id, ticket.subject FROM ticket INNER JOIN ticket_assignee_mapping ON ticket.assignee_id=ticket_assignee_mapping.assignee_id WHERE status_id = $firstLevelId");if($ticketIdQuery){ while ($ticketIdQueryFetch = pg_fetch_array($ticketIdQuery)) { print_r($ticketIdQueryFetch); }}有没有办法将它找到的每一行的输出限制为一个
1 回答
有只小跳蛙
TA贡献1824条经验 获得超8个赞
当您的 JOINed 表具有一对多关系并且您只选择有限数量的列时,您看不到为什么会得到如此多的结果。因此,我建议不要使用 DISTINCT,而是使用 GROUP BY 子句来指定您真正感兴趣的列。如果您还在 SELECT 中添加了 COUNT(*),则可以继续调整查询,直到记录计数总计返回的每一行 1。尝试这个:
$ticketIdQuery = pg_query($db, "SELECT ticket.assignee_id, ticket.subject, COUNT(*) FROM ticket INNER JOIN ticket_assignee_mapping ON ticket.assignee_id=ticket_assignee_mapping.assignee_id WHERE status_id = $firstLevelId GROUP BY ticket.assignee_id, ticket.subject");
如果您仍有疑问,请发布ticket 和ticket_assignee_mapping 的表定义。
- 1 回答
- 0 关注
- 91 浏览
添加回答
举报
0/150
提交
取消