MySQL / MYSQL中的MySQL连接和ORDER BY

时间:2013-02-20 04:08:55

标签: php mysql

我有一个带有两个表的数据库

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

有关

2 个答案:

答案 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子句中添加ASCORDER 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/>';
    }