Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 需要帮助计算MySQL查询的计数是否为某个数字吗_Php_Mysql_Sql_Count - Fatal编程技术网

Php 需要帮助计算MySQL查询的计数是否为某个数字吗

Php 需要帮助计算MySQL查询的计数是否为某个数字吗,php,mysql,sql,count,Php,Mysql,Sql,Count,我有一个如下的表格设置: fruit1 | fruit2 | fruit3 | fruit4 | number1 | number2 | number3 | number4 -------------------------------------------------------------------------- apple | orange | banana | berry | 5 | 2 | 1 | 4 orange | banan

我有一个如下的表格设置:

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倍。这有意义吗?水果1的编号是1号,水果2的编号是2号,等等

我可以用一些php代码来实现这一点,但我知道这是一个非常简单的MySQL查询。我只是最难把问题放在一起

提前谢谢

SELECT fruit, COUNT(*) NumberOfInstance
FROM
(
    SELECT fruit1 fruit, number1 num FROM table1
    UNION ALL
    SELECT fruit2 fruit, number2 num FROM table1
    UNION ALL
    SELECT fruit3 fruit, number3 num FROM table1
    UNION ALL
    SELECT fruit4 fruit, number4 num FROM table1
) s
WHERE num = 5
GROUP BY fruit

由于表未正确规范化,您的日子不好过。0_o(我同意Jack的观点,确实是奇数模式!)如果您必须这样对列进行编号,那么您就做错了。这就像在程序中有名为
$thing1
$thing2
$thing3
的变量一样,它们应该位于一个名为
$things
的数组中。在本例中,因为有一组名为FROUT1、FROUT2、FROUT3的列,所以应该有一个子表FROUTS。我很好奇你们认为我应该如何以不同的方式组织数据库。我有一个表单,用户可以从下拉列表中选择最多5个水果,然后从1到5对每个水果进行评分。然后选择和评级作为1条记录写入表中。所有的水果都是独一无二的。你们是说我应该有两个不同的表,它们之间有一个共享列,比如日期/时间之类的?一张水果桌和一张数字桌?我不确定这将如何使事情变得更容易,所以我可能不理解你的建议。感谢您的评论。创建一个表,其中列为
formid
fruit
rating
,主键为
formid
fruit
。用户选择的每个水果都将在此表中的不同行中,用
formid
表示该用户的表单。这非常有效,谢谢!我想我需要在我的桌子组织上工作。非常感谢您的快速帮助。所以我一直在尝试如何修改查询以显示每个水果的所有数字。所以我会得到一张桌子,上面显示:水果| 5 | 4 | 3 | 2 | 1的苹果| 2 | 0 | 0 | 1 | 0香蕉| 0 | 0 | 1 | 1。。。这是对查询的简单添加吗?还是这让事情变得更复杂了?我试过了,但它并没有给我我所期望的。如果我删除“Where num=5”,我仍然只得到两列。在本例中,所有水果都有数字3。@JackHillard yes,因为正如您所看到的,子查询只返回两列。最好就这些变化提出一个新的问题。