PDO - 加入查询并输出正确的数据

时间:2015-08-10 21:01:01

标签: php mysql sql pdo

我目前正在尝试制作非常基本的支持票。

我有两个数据库表supportsupportreplies 支持列id, userid, message, creationdate,supportreplies有id, supportid, userid, comment, messagedate

表格布局:

1) support (id, userid, message, creationdate)
2) supportreplies (id, supportid, userid, comment, messagedate)

然后加入。

$sqlt=$dbht->prepare("SELECT *
FROM supportreplies 
LEFT JOIN support 
ON supportreplies.supportid=support.id
GROUP BY supportid ORDER BY supportid DESC");

然后输出这样的门票:

foreach ($sqlt->fetchAll() as $rows){
echo $rows['message']; 
echo $rows['creationdate'];
echo $rows['message'];
echo $rows['comment'];
echo $rows['messagedate'];
}

现在这在一定程度上有效,除了它只加载每张票的第一条评论。我迷失在接下来要做什么,我怎么能让它起作用呢?

2 个答案:

答案 0 :(得分:1)

您正在寻找的东西需要在两个不同的查询中完成。一个需要SELECT所有票证,然后对于每个票证,运行另一个查询以获得与support.p匹配的supportreplies.supportid的所有回复。

这可以在MySQL中使用称为子查询的东西本地完成:https://dev.mysql.com/doc/refman/5.0/en/subqueries.html

您必须找到为您的代码实现此方法的方法;)

答案 1 :(得分:0)

问题是你的GROUP BY条款。通过supportid对记录进行分组,您可以有效地将每个支持者的所有结果“分组”到一个记录中。

您是否需要将结果分组?如果没有,你可以简单地删除条款:

$sqlt=$dbht->prepare("SELECT *
FROM supportreplies 
LEFT JOIN support 
ON supportreplies.supportid=support.id
ORDER BY supportid DESC")