我正在尝试按字段'number'从表'tech_inquiry'中按降序排序数据。这应该按年顺序排列结果。每个“数字”字段对应于另一个具有标题/日期(访问者实际查看的内容)的字段,我无法对其进行排序,因为日期位于标题的末尾,而不是始终位于同一位置。
此外,表'tech_inquiry_allowed'确定登录时谁可以查看。
话虽如此,这是代码:
<?
$query2=mysql_query("SELECT * FROM tech_inquiry_allowed where term_code = '$term_code' ");
while($row2=mysql_fetch_assoc($query2))
{
$id2=$row2['id'];
$query3=mysql_query("SELECT * FROM tech_inquiry WHERE id= '$id2' ORDER BY number DESC");
$row3=mysql_fetch_assoc($query3);
$name3=$row3['name'];
?>
<hr />
<li><a href="get_file.php?id=<? echo $id2; ?> "><? echo $name3; ?> </a> </li>
<?
}
?>
另外,我还有另一个'admin'部分,可以正确地订购数据。唯一的区别是没有条件'where'子句,因为不需要用户身份验证(它用于向表中添加数据)。
以下是代码:
<?
$query2= mysql_query("SELECT * from tech_inquiry ORDER BY number DESC");
while($row2=mysql_fetch_assoc($query2))
{
$id2=$row2['id'];
$name2=$row2['name'];
?>
<hr />
<li><a href="get_file.php?id=<? echo $id2; ?> "><? echo $name2; ?> </a> </li>
<?
我想知道是否可能是我们在循环中运行查询。
答案 0 :(得分:1)
您没有循环内部查询。无论如何,您应该使用单个查询:
SELECT allowed.*, inquiry.*
FROM tech_inquiry_allowed allowed
INNER JOIN tech_inquiry inquiry
ON inquiry.id = allowed.id
WHERE term_code = '$term_code'
ORDER BY inquiry.number DESC
答案 1 :(得分:1)
这里有很多问题。首先,您只需要一个查询即可完成此任务。请稍等一下,阅读SQL查询。你会发现它非常有帮助。
其次,您使用的代码超出了您的需要。下面是更简化,更清晰,可能更快的代码。
<?php
$query = mysql_query("SELECT * FROM tech_inquiry ti WHERE id IN (SELECT id FROM tech_inquiry_allowed where term_code = '$term_code') ORDER BY ti.number");
while ($row = mysql_fetch_object($query)) {
echo "<hr />\n<li><a href='get_file.php?id={$row->id}'>{$row->name}</a></li>";
}
?>