我尝试提出一个更好的标题,但我希望能与我聊天,以便能更好地讨论我的意思。无论如何,我有一个while循环正在运行,该循环从两个表中提取数据并正确显示结果。我有第三张表,我想根据循环中出现的id显示结果的名称...明白我的意思,这没有任何意义。
这是查询和循环:
try {
$stmt = $Conn->prepare("SELECT * FROM wn_trailer "
. "INNER JOIN wn_trailer_history ON wn_trailer.id = wn_trailer_history.trailer_id "
. "ORDER BY trailer_number ASC");
$stmt->execute();
$stmt2 = $Conn->prepare("SELECT status_name FROM wn_trailer_status WHERE status_id = :status");
$stmt2->execute([":status" => $row[1]]);
while ($row = $stmt->fetch(PDO::FETCH_NUM, PDO::FETCH_ORI_NEXT)) {
$data = "<tr>\r\n<td><a href='view-trailer.php?id=$row[0]'>" . $row[1] . "</a></td>\r\n"
. "<td>" . $row[1] . "</td>\r\n"
. "<td>" . $row[16] . "</td>\r\n"
. "<td><a href='https://www.google.com/maps/search/?api=1&query=$row[3],$row[4]' target='_blank'>View Map</a></td>\r\n"
. "</tr>\r\n";
print $data;
}
} catch (PDOException $e) {
print $e->getMessage();
}
$ stmt2是命中第三个表的第二个查询。在循环运行时,我希望它比较第一个查询的结果,以及是否找到ID以返回列中的值。查询是好的,我在mysql日志中检查了它,但是没有返回值。
我正在考虑做的另一种选择是编写一个函数,该函数运行在wn_trailer_status中并创建一个select案例,然后使用该函数比较为什么我没有多次冲击数据库的结果。
tldr; 我的问题是如何将第一个查询的结果与第二个查询的结果进行比较,并显示列的结果,还是应该使用select case函数处理工作量?
答案 0 :(得分:1)
假设第一个查询表单表wn_trailer重新调整了值状态,则可以通过添加内部联接来解决这两个查询
$stmt = $Conn->prepare("SELECT *
FROM wn_trailer
INNER JOIN wn_trailer_history ON wn_trailer.id = wn_trailer_history.trailer_id
INNER JOIN wn_trailer_status ON wn_trailer_status.status_id = wn_trailer.status
ORDER BY trailer_number ASC");