Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.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_Count - Fatal编程技术网

Php mysql查询中订单位置的计算

Php mysql查询中订单位置的计算,php,mysql,count,Php,Mysql,Count,我目前正在设计一个发票系统,可以将发票分配给不同的项目。发票将仅分配给一个项目 目前,我有一个mysql表,我想用发票号查询,检索发票所针对的各个项目的所有发票,按创建日期排序,然后根据我将要查询的发票号(这是我坚持的位),计算该发票在该项目的总发票中的数量 为了更清楚,我的意思如下 URN_ID URN_Project_ID URN_Date 1 1 2012-03-17 2 3

我目前正在设计一个发票系统,可以将发票分配给不同的项目。发票将仅分配给一个项目

目前,我有一个mysql表,我想用发票号查询,检索发票所针对的各个项目的所有发票,按创建日期排序,然后根据我将要查询的发票号(这是我坚持的位),计算该发票在该项目的总发票中的数量

为了更清楚,我的意思如下

URN_ID        URN_Project_ID    URN_Date
1             1                 2012-03-17
2             3                 2012-03-18
3             2                 2012-03-21
4             1                 2012-03-21
5             2                 2012-04-05
6             1                 2012-04-08
7             3                 2012-04-15
8             2                 2012-04-24
9             1                 2012-05-02
10            3                 2012-05-10
URN_ID        URN_Project_ID    URN_Date
1             1                 2012-03-17
4             1                 2012-03-21
6             1                 2012-04-08
9             1                 2012-05-02
假设我使用发票编号6进行了查询,因此该项目为项目1。本质上,我将把信息范围缩小到以下几点

URN_ID        URN_Project_ID    URN_Date
1             1                 2012-03-17
2             3                 2012-03-18
3             2                 2012-03-21
4             1                 2012-03-21
5             2                 2012-04-05
6             1                 2012-04-08
7             3                 2012-04-15
8             2                 2012-04-24
9             1                 2012-05-02
10            3                 2012-05-10
URN_ID        URN_Project_ID    URN_Date
1             1                 2012-03-17
4             1                 2012-03-21
6             1                 2012-04-08
9             1                 2012-05-02
我们可以从上面看到,我总共有4张发票,但我想找到一种方法返回发票6是4张发票中的第3张。这样做的目的是,如果将来有人打印发票副本,查看该项目的人员可以清楚地看到该发票是发票3。最后,我不需要在我的文档上详细说明发票的总数,只需要在总数内的位置

如果有任何帮助,我将不胜感激,因为我早上大部分时间都在寻找一个解决方案,我可以拼凑起来,但没有用。作为一种退步,我总是可以在我的表中添加另一列,在输入阶段进行mysql计数,然后将到目前为止的总数添加到该列中,但我更愿意学习一些新的东西,并将我的表保持在最小值

提前感谢您提供的任何解决方案或帮助

艾伦

编辑

好的,还有一些补充信息

  • 我从中提取数据的表名为:urn
  • 目前,我的表有5列,分别称为URN\u ID、URN\u PROJECT\u ID、URN\u Date、URN\u Due\u Terms、URN\u Doc\u Type
N.B.我已经更新了上面的列数据,以反映我的实际列名

到目前为止,我已经尝试:

$query2 = "SELECT  @curRow := @curRow + 1 AS row_number, iv.* FROM urn iv JOIN (SELECT @curRow := 0) r WHERE iv.URN_Project_ID='$urn_project_id'";
$res2 = mysql_query($query2);
$data2 = mysql_fetch_array($res2);
echo $data2['row_number'];
但是,无论我显示了哪个URN_ID,它都只返回1作为值

我对使用@sign的语句一无所知,因此我不知道如何调试它

任何帮助都是好的

干杯。
Al.

虽然一开始看起来有点不舒服,但这可能是最好的方法

mysql> SET @rank=0;

mysql> SELECT @rank:=@rank+1 AS rank,OtherColumns as Column FROM Invoices .....
@rank增量将满足您的要求。您应该事先设置@rank变量;如果设置了排名或排名不一致(未测试),则可能有一种方法来完成案例,然后结束:


基本上,您希望在结果集中添加一个行号,例如:

SELECT  @curRow := @curRow + 1 AS row_number,
        iv.*
FROM    invoices iv
JOIN    (SELECT @curRow := 0) r
WHERE   iv.project_id=1;
这应返回:

row_number invoice id    project_id    invoice_date
1          1             1             2012-03-17
2          4             1             2012-03-21
3          6             1             2012-04-08
4          9             1             2012-05-02

让我们看看你的疑问!发票的编号取决于您对结果排序的列…您不能在应用程序中添加该位置吗?在输出步骤中,这样做更容易、更干净。一旦我调整了代码以适应实际的表格标题,您对如何显示行号有什么建议吗?虽然我发布了如何实现您所说的目标,但下一个问题是您正在使用什么(计算机)语言编写发票系统,你是如何使用这些结果的?顺便提一下,我忘了在发票日期asc之前添加订单;在查询结束时-很抱歉!是的,很抱歉在我的第一篇文章中可能没有足够的细节。我使用PHP,我只需要输出行号作为变量的回音,这是从上面的例子中得到的非常简单的东西。如果你能为我指出正确的方向,我将不胜感激。谢谢