有关
我有一个数据库,它看起来像这样,有两个表
项目id |标题-----------------------------1辆公共汽车2平面3喷气式飞机4只鞋5椅子
排序id|CatID|ItemID|SortOrder-------------------------------------------------------------------------------1 3 32 3 2 13 3 4 24 3 1 05 4 5 4
我不知道如何根据SORTING表的"SortOrder"列列出ITEMS表格的标题。
以下是我迄今为止尝试的内容:
SELECT *
FROM Items
LEFT JOIN Sorting ON Items.id = Sorting.ItemID
WHERE Sorting.CatID = 3
ORDER BY Sorting.SortOrder
我不确定我做错了什么
编辑
看起来MySQL查询是正确的,问题的出现是因为当我输出Items表的$row['id']时,它是不正确的。我有一个Ajax PHP更新,它基于li标记的id更新数据库。
你知道$row['id']输出错误的原因吗?我认为这与Items.id=Sorting.ItemID
这可以按预期工作-SQLFiddle DEMO:
SELECT i.*, s.SortOrder
FROM items i, sorting s
WHERE i.id = s.ItemID
AND s.CatID = 3
ORDER BY s.SortOrder
尝试
SELECT *
FROM Items
LEFT JOIN Sorting ON Items.id = Sorting.ItemID
WHERE Sorting.CatID = 3
ORDER BY Sorting.SortOrder ASC
在ORDER BY
子句中添加DESC
或ASC
。
若使用ASC
,则排序结果将为SortOrder
的0 1 2 3 4
。
获取标题的示例php代码
<?php
$query = mysqli_query(above_query)or die(mysqli_error());
while($result = mysqli_fetch_assoc($query))
{
echo $result['title']. '<br/>';
}