我目前正在尝试制作非常基本的支持票。
我有两个数据库表support
和supportreplies
支持列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'];
}
现在这在一定程度上有效,除了它只加载每张票的第一条评论。我迷失在接下来要做什么,我怎么能让它起作用呢?
答案 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")