【发布时间】:2012-12-30 05:02:30
【问题描述】:
我有一个这样的表设置:
fruit1 | fruit2 | fruit3 | fruit4 | number1 | number2 | number3 | number4
--------------------------------------------------------------------------
apple | orange | banana | berry | 5 | 2 | 1 | 4
orange | banana | apple | berry | 3 | 2 | 5 | 2
berry | banana | orange | apple | 1 | 2 | 5 | 2
我需要一个 MySQL 查询来计算给定水果有多少次是 5。在这个例子中,苹果是 5 两次,橙子是 5 一次。那有意义吗? fruit1 的编号是 number1,fruit2 的编号是 number2,以此类推……
我可以用一点 php 代码做到这一点,但我知道这是一个非常简单的 MySQL 查询。我只是很难将查询放在一起。
提前致谢!
【问题讨论】:
-
您遇到了困难,因为您的表格未正确规范化。
-
0_o(我同意 Jack,确实是奇怪的模式!)
-
如果你必须像这样给你的列编号,你做错了。这就像如果您的程序中有变量名为
$thing1、$thing2、$thing3,它们应该在一个名为$things的数组中。在这种情况下,因为您有一组名为fruit1、fruit2、fruit3 的列,所以您应该有一个水果子表。 -
我很好奇你们认为我应该如何以不同的方式组织我的数据库。我有一个表单,用户可以从下拉列表中选择最多 5 种水果,然后从 1 到 5 对每种水果进行评分。然后将选择和评分作为 1 条记录写入表中。所有的水果都是独一无二的。你们是说我应该有两个不同的表,它们之间有一个共享列,比如日期/时间之类的吗?一张水果表和一张数字表?我不确定这会让事情变得更容易,所以我可能不明白你的建议。感谢 cmets。
-
有一个包含
formid、fruit和rating列的表,其中formid和fruit作为主键。用户选择的每个水果都将是该表中的不同行,formid代表该用户的表单。