我有这个名为"categories"的表,有三个字段,如下所示
cat | order | id
--------|-------|----
News | 3 | 23
Hi-Tech | 2 | 15
Biz | 5 | 8
Health | 1 | 3
Run Code Online (Sandbox Code Playgroud)
另外,我有另一个名为"链接"的表,如下所示
link | order | cat-id
--------|-------|-------
link1 | 2 | 23
link2 | 8 | 15
link3 | 5 | 8
link4 | 6 | 15
link5 | 2 | 15
link6 | 4 | 23
link7 | 1 | 3
link8 | 1 | 8
Run Code Online (Sandbox Code Playgroud)
我想要实现的是对类别进行排序,并在每个类别下面对类别cat-id/id的链接进行排序,如下所示:
健康
链接7
高科技
link5
link4
link2
新闻
link1
link6
商业
链接8
link3
我成功地显示了已排序的类别,但我在它之后失去它.
我的目标是在页面上显示这个,所以我想我必须使用PHP和mySQL.
Pao*_*ino 16
查询就是这样:
SELECT c.cat, l.link, c.id
FROM links l INNER JOIN categories c
ON l.cat-id = c.id
ORDER BY c.`order`, l.`order`
Run Code Online (Sandbox Code Playgroud)
而这是在工作.
为了在页面上显示它,它看起来像这样:
mysql_connect(<host>, <username>, <password>);
$q = mysql_query("<query from above>");
$last_cat = 0;
while($row = mysql_fetch_assoc($q)) {
if($row['id'] != $last_cat) {
print '<h3>' . $row['cat'] . '</h3>';
$last_cat = $row['id'];
}
print $row['link'] . '<br>';
}
Run Code Online (Sandbox Code Playgroud)
我在脑海里写了这个,所以没有测试它,但它有点像这样:
$q = mysql_query("select * from categories c
left join links l
on l.cat-id=c.id
order by c.order,l.order");
$last_cat = -1;
while($row=mysql_fetch_assoc($q)){
if($last_cat!=$row["cat"]){
echo "<br><b>".$row["cat"]."</b><br>";
$last_cat=$row["cat"];
}
echo $row["link"]."<br>";
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
568 次 |
| 最近记录: |