【问题标题】:comparing values between different rows of database and getting maximum count比较数据库不同行之间的值并获得最大计数
【发布时间】:2011-12-21 16:45:59
【问题描述】:

我有一个表,其中一行包含以下数据。所以我需要比较它们之间的数据并显示哪些数据具有最大计数。例如。我的桌子上有以下水果名称。所以我需要先比较这些水果并显示最大水果数。

s.no |             field1             |
1    |apple,orange,pineapple          |
2    |apple,pineapple,strawberry,grapes|
3    |apple,grapes,                   |
4    |orange,mango                    |

即苹果第一,葡萄第二,菠萝第三,依此类推。这些数据是动态输入的,所以无论动态输入什么值,都需要相互比较并获得最大计数

【问题讨论】:

    标签: php mysql


    【解决方案1】:

    好问题。

    这是未对数据进行标准化的典型不良结果。

    我建议你阅读Database Normalization,规范化你的表,然后看看用简单的 SQL 查询来做到这一点是多么容易

    【讨论】:

    • k tudor..但是如果数据是动态的,那么如何比较它们..我不知道接下来要输入什么数据..所以无论动态输入什么值,它都需要在它们之间进行比较并获得最大计数
    • 看看 Zohaib 的答案——这是标准化数据的一个很好的开始——它也解决了你的“问题”
    【解决方案2】:

    如果您需要对列字段 1 运行查询,那么为什么不考虑 normalization 呢?否则它可能会在未来变得越来越复杂和肮脏。

    您当前的表将如下所示(仅适用于序列号 1),Pk 可以是自增主键。

    Pk | s.no    |fruitId|
    1  |   1     |1     |
    2  |   1     |2     |
    3  |   1     |3     |
    

    你的新水果桌

    PK    |fruitName  |
    1     |Apple      |
    2     |Orange     |
    3     |Pineapple  |
    

    这也可以帮助您避免冗余。

    【讨论】:

    • 但是如果数据是动态的,那么如何比较它们..我不知道接下来要输入什么数据..所以无论动态输入什么值,它都需要在它们之间进行比较并获得最大计数
    【解决方案3】:

    快速解决方案是计算插入/更新行并添加fruitCount 列的水果数量。然后您可以使用此列进行排序。

    Zohaib 必须更正解决方案 - 如果您有时间和可能性进行此类更改。我绝对建议您阅读 Tudor 的链接!

    【讨论】:

      猜你喜欢
      • 2019-10-07
      • 1970-01-01
      • 1970-01-01
      • 2011-05-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多