Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/274.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 - Fatal编程技术网

Php MySQL在整数零问题上签署订单

Php MySQL在整数零问题上签署订单,php,mysql,Php,Mysql,我目前在MyISAM表中设置了一个有符号整数 查询如下: SELECT * from some_view ORDER BY value DESC, dateAdded DESC 我收到这个订单: 1 2 -1 -2 0 0 零值不被视为+/-,但我需要它们大于负值 这是我的实际查询: 选择*从vw_answer sa left加入vw_answer投票av.answerID=sa.id其中sa.id=77按av.vote排序,日期已添加 我有以下资料: tbl_users tbl_solut

我目前在MyISAM表中设置了一个有符号整数

查询如下:

SELECT * from some_view ORDER BY value DESC, dateAdded DESC
我收到这个订单:

1
2
-1
-2
0
0
零值不被视为+/-,但我需要它们大于负值

这是我的实际查询:

选择*从vw_answer sa left加入vw_answer投票av.answerID=sa.id其中sa.id=77按av.vote排序,日期已添加

我有以下资料:

tbl_users
tbl_solutions - Indexes tbl_users.id as authorID
tbl_solution_answers - Indexes tbl_solutions.id as solutionID
tbl_solution_answer_votes - Indexes tbl_users.id as voterID and tbl_solution_answers
as answerID
tbl_solution_answer_投票只有一个无索引列,该列包含-1或1,具体取决于用户投票。这是一个有符号整数

选择答案时的我的视图选择tbl\U解决方案\U答案和总和(tbl\U解决方案\U答案\U投票。投票)

除了对有符号整数进行排序外,这一切都是有效的

编辑:投票表中的值仅在用户投票时存在,否则它根本不存在。我需要这样的东西我想:

SELECT * FROM tbl_answers sa right join vw_answer_votes av on av.answerID = sa.id
ORDER BY av.vote > 0 desc, av.vote IS NULL, av.vote < 0 desc,  dateAdded DESC
SELECT*FROM tbl\u answers sa right join vw\u answer\u vows av on av.answerID=sa.id
按av.vote>0描述排序,av.vote为空,av.vote<0描述,日期添加描述
您应该试试

ORDER BY CAST(value AS SIGNED) DESC
如果你的观点把类型搞砸了,你应该试试

ORDER BY CAST(value AS SIGNED) DESC

如果您的视图在两个字段(value和dateadded)上修改了类型,请尝试删除您的dateadded

create table order_by_neg_test
    (`id` int(11) unsigned not null auto_increment, 
    `value` int(11) signed not null, 
     primary key (`id`)) engine=myisam default charset=utf8;
我插入了一些随机值,结果如下:

# No order
mysql> select * from order_by_neg_test;
+----+-------+
| id | value |
+----+-------+
|  1 |    45 |
|  2 |     1 |
|  3 |     0 |
|  4 |    -1 |
|  5 |    17 |
|  6 |    27 |
|  7 |    -1 |
+----+-------+
7 rows in set (0.00 sec)

# With an order
mysql> select * from order_by_neg_test order by value desc;
+----+-------+
| id | value |
+----+-------+
|  1 |    45 |
|  6 |    27 |
|  5 |    17 |
|  2 |     1 |
|  3 |     0 |
|  4 |    -1 |
|  7 |    -1 |
+----+-------+
7 rows in set (0.00 sec)

请注意订单中的0>-1。

您在两个字段上订购,即value和dateadded,请尝试删除添加的日期

create table order_by_neg_test
    (`id` int(11) unsigned not null auto_increment, 
    `value` int(11) signed not null, 
     primary key (`id`)) engine=myisam default charset=utf8;
我插入了一些随机值,结果如下:

# No order
mysql> select * from order_by_neg_test;
+----+-------+
| id | value |
+----+-------+
|  1 |    45 |
|  2 |     1 |
|  3 |     0 |
|  4 |    -1 |
|  5 |    17 |
|  6 |    27 |
|  7 |    -1 |
+----+-------+
7 rows in set (0.00 sec)

# With an order
mysql> select * from order_by_neg_test order by value desc;
+----+-------+
| id | value |
+----+-------+
|  1 |    45 |
|  6 |    27 |
|  5 |    17 |
|  2 |     1 |
|  3 |     0 |
|  4 |    -1 |
|  7 |    -1 |
+----+-------+
7 rows in set (0.00 sec)

请注意,顺序为0>-1。

模式中的
列是什么类型的?因此,您得到的是0,但您希望它们不是负数?浮点、十进制和双精度。但这并不重要,因为我已经声明它是一个有符号整数,并且值从来都不是-1、0或1I。我的意思是我已经“尝试”了而不是“厌倦”了
value
列在您的模式中有什么类型?所以您得到了0,但您希望它们不是负数?厌倦了浮点、十进制和双精度。但这并不重要,因为我已经声明它是一个有符号整数,并且它的值永远不会超过-1、0或1。我的意思是我已经“尝试”了,而不是“累了”,我需要将日期添加为子订单。45 2012-01-17然后45 2012-01-16明白了。两件事。在您列出的“示例”查询中,请尝试按值排序,dateAdded DESC。此外,您列出的“实际”查询是按ASC排序的(如果您没有在ORDER by之后列出任何内容,则会发生这种情况)。我已经尝试了许多组合,结果总是以0作为底部结果返回。升序/降序“0”值的结果应介于1和-1I之间。如果有帮助,我将编辑问题并列出所有涉及的表?@CraigStewart:Ya在“dateAdded”上添加子排序时,不可能让“value”正确排序。为什么要对这两者进行排序,也许我们可以后退一步,尝试不同的查询构造。我需要将添加的日期作为子订单。45 2012-01-17然后45 2012-01-16明白了。两件事。在您列出的“示例”查询中,请尝试按值排序,dateAdded DESC。此外,您列出的“实际”查询是按ASC排序的(如果您没有在ORDER by之后列出任何内容,则会发生这种情况)。我已经尝试了许多组合,结果总是以0作为底部结果返回。升序/降序“0”值的结果应介于1和-1I之间。如果有帮助,我将编辑问题并列出所有涉及的表?@CraigStewart:Ya在“dateAdded”上添加子排序时,不可能让“value”正确排序。对这两种类型的desc进行排序的原因是什么,也许我们可以后退一步,尝试不同的查询构造。