0

我有一个看起来像这样的数据库,有两个表

项目
编号 | 标题
-----------------------------------------
1 路公交车
2 平面
3 喷气机
4 鞋
5 椅子
排序
编号 | 猫号 | 物品编号 | 排序
-------------------------------------------------- -----------------------------------------
1 3 3 3                 
2 3 2 1
3 3 4 2
4 3 1 0
5 4 5 4

我不知道如何根据排序表的“排序顺序”列列出项目表的标题。

这是我到目前为止所尝试的:

   SELECT * 
     FROM Items
LEFT JOIN Sorting ON Items.id = Sorting.ItemID 
    WHERE Sorting.CatID = 3 
 ORDER BY Sorting.SortOrder

我不确定我做错了什么

编辑

看起来 MySQL 查询是正确的,问题正在发生,因为当我输出 Items Table 的 $row['id'] 时它不正确。我有一个 Ajax PHP 更新,它根据 li 标签的 id 更新数据库。

任何想法为什么 $row['id'] 输出不正确?我认为这与Items.id = Sorting.ItemID有关

4

2 回答 2

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
于 2013-02-20T04:22:25.917 回答
0

尝试

SELECT * 
     FROM Items
LEFT JOIN Sorting ON Items.id = Sorting.ItemID 
    WHERE Sorting.CatID = 3 
 ORDER BY Sorting.SortOrder ASC

添加DESCASCORDER 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/>';
    }
于 2013-02-20T04:13:28.670 回答