【问题标题】:Order MySQL result by column value按列值对 MySQL 结果排序
【发布时间】:2013-05-03 22:06:11
【问题描述】:

如果今天是我的第二个帖子不妥,我很抱歉,但我还需要一点帮助。 我在 mysql DB 中有一个表,其中包含一些产品(id、name、description、price、url、CATEGORY)。现在,当我显示产品时,我需要先显示所有 category='X' 的产品(不管表中产品的实际顺序),然​​后显示 category="Y" 的产品,最后显示 category 的产品=“Z”。只有 3 个类别,我只是将该列添加到产品表中,而没有创建单独的“类别”表(我知道这很糟糕)。 这是提取所有产品的简单代码(我不能使用 PDO,因为该网站很旧并且只能使用旧/常规 mysql 完成)

while($prod = mysql_fetch_assoc($sql)) {
    $id = $prod['id'];
    $titolo = $prod['titolo'];
    $descr = $prod['descrizione'];
    $prezzo = $prod['prezzo'];
    $foto_piccola = $prod['url_foto_piccola'];
    $foto_grande = $prod['url_foto_grande'];
    $cat = $prod['categoria'];
            // display all products
}

那么有什么想法可以让我轻松/快速地做到这一点吗?我的第一个猜测是在 while() 循环中创建一个 switch('category'),但我最终得到了很多重复的代码。

非常感谢任何帮助和建议, 谢谢

这是我的 $sql $sql = mysql_query(" SELECT * FROM prodotti Order BY categoria='marmellata' DESC, categoria='altro' DESC, categoria='oli' DESC")

这种方式是行不通的。我想提取类别的名称并在其下方显示该类别的产品

【问题讨论】:

  • 你为什么不让 MySQL 给你排序呢?
  • 你能提供一个示例输出吗?

标签: php mysql grouping


【解决方案1】:

如果您的类别字段是 INT 并且您的类别按您想要的顺序输入,您可以使用 Order By category

-或-

如果您的类别是按名称输入的,您可以使用Order BY category='X' DESC, category='Y' DESC, category='Z' DESC(尽管我建议您按 ID 输入)

【讨论】:

  • 基本上我想要这样的东西:饮料:(显示所有产品类别为饮料),食品:(相同的东西..),其他:(相同的东西..)。其中饮料、食品和其他是

    ,在它们下方显示产品

  • 你能发布一个查询输出的例子吗?我会更容易帮助你。
  • 我的查询 SELECT * 从表中,非常简单和常见。我不明白查询的输出是什么意思?
  • 对不起,输出可能不是最好的词(我说法语)。我的意思是“结果”。我想看看您的查询结果的示例。
  • lapalombella.it/prodotti.php 基本上就是这样。不介意款式,只介意展示的产品
【解决方案2】:

你甚至可以使用 SQL 的 Field() 函数

order by Field(category, X, Y, Z)

【讨论】:

    猜你喜欢
    • 2013-09-08
    • 2018-03-14
    • 1970-01-01
    • 2019-04-09
    • 2016-03-02
    • 1970-01-01
    • 2016-01-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多