gpt4 book ai didi

PHP以正确的顺序从五个不同的表中检索信息

转载 作者:行者123 更新时间:2023-11-29 06:39:34 24 4
gpt4 key购买 nike

我开发了一个聊天系统,学生和教职员工可以在其中交换不同的消息。我开发了一个数据库,其中有五个表:员工表、学生表、消息表和两个映射表:staff_message 和 Stu_message。这些表仅包含学生/员工 ID 和消息 ID。

我的问题是我无法订购消息。我的意思是,我无法弄清楚如何创建一个 SQL 语句来返回所有消息并按 ID 等进行排序。我编写的代码是这样的:

$qu = mysqli_query($con,"SELECT * FROM stu_message");
while($row7 = mysqli_fetch_assoc($qu)){
$que = mysqli_query($con, "SELECT * FROM student WHERE studentid =".$row7['stu_id']);

while($row8 = mysqli_fetch_assoc($que)) {
$username = $row8['username'];
}

$query3 = mysqli_query($con, "SELECT * FROM message WHERE id=".$row7['mid']);
while($row6 = mysqli_fetch_assoc($query3)) {
echo $row6['date']."<strong> ".$username."</strong> ".$row6['text']."<br>";
}
}

$query2 = mysqli_query($con, "SELECT * FROM staff_message");
while($row3 = mysqli_fetch_assoc($query2)){
$query = mysqli_query($con, "SELECT * FROM staff WHERE id =".$row3['staff_id']);

while($row5 = mysqli_fetch_assoc($query)) {
$username = $row5['username'];
}

$query3 = mysqli_query($con, "SELECT * FROM message WHERE id=".$row3['m_id']);
while($row6 = mysqli_fetch_assoc($query3)) {
echo $row6['date']."<strong> ".$username."</strong> ".$row6['text']."<br>";
}
}
?>

结果和我想要的不一样。更具体地说,首先显示来自学生的消息,然后显示来自工作人员的消息。我的问题是,是否有任何查询可以将基本上所有这四个表合并在一个表中,并且所有消息都将按正确的顺序显示?例如通过id?预先感谢您!

最佳答案

首先,使用JOIN获取stu_idstaff_id对应的用户名,以及消息正文,而不是单独查询.

然后使用 UNION 将两个查询合并为一个查询,然后您可以使用 ORDER BY 对其进行排序。

SELECT u.id, u.text, u.username
FROM (
SELECT s.username, m.text, m.id
FROM message AS m
JOIN stu_message AS sm ON m.id = sm.mid
JOIN student AS s ON s.id = sm.stu_id
UNION ALL
SELECT s.username, m.text, m.id
FROM message AS m
JOIN staff_message AS sm ON m.id = sm.m_id
JOIN staff AS s ON s.id = sm.staff_id
) AS u
ORDER BY u.id

关于PHP以正确的顺序从五个不同的表中检索信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52373369/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com