如何将 UNION ALL 查询的结果显示为链接?
Posted
技术标签:
【中文标题】如何将 UNION ALL 查询的结果显示为链接?【英文标题】:How do you display the result from a UNION ALL query as links? 【发布时间】:2012-03-26 00:25:36 【问题描述】:在使用 UNION ALL 时,我在将 sql 查询的结果作为链接回显时遇到问题。
表格如下所示:
表格:帖子 id 用户名 日期 评论
表格:文件 id 用户名日期文件
“文件”行包含上传文件的网址。
我用于显示结果的代码:
<?php
$sql="SELECT * FROM posts
UNION ALL
SELECT * FROM files
ORDER BY date DESC LIMIT 100";
$result=mysql_query($sql);
while($rows=mysql_fetch_array($result))
?>
<div> <?php echo $rows['comment']; ?> </div>
<div> <a href="<?php echo $rows['file']; ?>"><?php echo $rows['file']; ?></a> </div>
<?php
?>
现在一切都按正确的顺序排列,但文件名不会显示为链接,只会显示为纯文本。 没有问题,如果我只在文件表上运行查询,就会显示链接。
我想最大的问题是:
【问题讨论】:
你的输出是什么?从该代码看来一切都很好。 查询可能是问题所在。尝试使用联接而不是联合 我的输出或多或少是应该的,只是文件名没有显示为链接,只有纯文本,即使我使用了 html a 标签。 我也尝试过加入,但是当我使用它时整个页面都变成空白了:) 我会研究一下,ibu。 @Lassa : 可以点om文件名打开吗? 【参考方案1】:当您执行 UNION 查询时,列会合并,这意味着您的 comment
和 file
列将相同,其结果集名称将是 comment
(第一个 select 语句)。见http://dev.mysql.com/doc/refman/5.0/en/union.html
我更倾向于使用两个单独的查询,一个针对posts
表,第二个针对files
。
【讨论】:
【参考方案2】:如果你有帖子表
1 2012-03-26 "a comment"
2 2012-03-26 "another comment"
在文件表中:
1 2012-03-26 "./myfile/txt"
2 2012-03-26 "./ico.gif"
联合都将是:
ID Date Comment/file
1 2012-03-26 "a comment"
1 2012-03-26 "./myfile/txt"
2 2012-03-26 "another comment"
2 2012-03-26 "./ico.gif"
(订单不保证)
因此,如果您尝试为每一行打印一个带有注释的 div 和一个带有文件作为链接的 div,这将不起作用。在您的情况下,它似乎只显示评论 div(因为查询结果行名必须是评论)
但是,如果您想要实现的目标可以使用上述连接来完成。 可能是这样,如果帖子 id 匹配具有相同 id 的文件行
SELECT p.comment comment f.file file FROM posts p
INNER JOIN files f ON f.id = p.id
结果将是:
comment file
"a comment" "./myfile/txt"
"another comment" "ico.gif"
问候
【讨论】:
以上是关于如何将 UNION ALL 查询的结果显示为链接?的主要内容,如果未能解决你的问题,请参考以下文章