我有一个带有两个表的数据库
Items id | Title ----------------------------- 1 Bus 2 Plane 3 Jet 4 Shoes 5 Chair
Sorting id | CatID | ItemID | SortOrder ------------------------------------------------------------------------------- 1 3 3 3 2 3 2 1 3 3 4 2 4 3 1 0 5 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
有关答案 0 :(得分:1)
这可以按预期工作 - SQLFiddle DEMO:
SELECT i.*, s.SortOrder
FROM items i, sorting s
WHERE i.id = s.ItemID
AND s.CatID = 3
ORDER BY s.SortOrder
答案 1 :(得分:0)
尝试
SELECT *
FROM Items
LEFT JOIN Sorting ON Items.id = Sorting.ItemID
WHERE Sorting.CatID = 3
ORDER BY Sorting.SortOrder ASC
在DESC
子句中添加ASC
或ORDER BY
。
如果您使用ASC
,那么0 1 2 3 4
的排序结果将为SortOrder
。
示例获取标题的PHP代码
<?php
$query = mysqli_query(above_query)or die(mysqli_error());
while($result = mysqli_fetch_assoc($query))
{
echo $result['title']. '<br/>';
}