Php mysql查询中订单位置的计算
我目前正在设计一个发票系统,可以将发票分配给不同的项目。发票将仅分配给一个项目 目前,我有一个mysql表,我想用发票号查询,检索发票所针对的各个项目的所有发票,按创建日期排序,然后根据我将要查询的发票号(这是我坚持的位),计算该发票在该项目的总发票中的数量 为了更清楚,我的意思如下Php mysql查询中订单位置的计算,php,mysql,count,Php,Mysql,Count,我目前正在设计一个发票系统,可以将发票分配给不同的项目。发票将仅分配给一个项目 目前,我有一个mysql表,我想用发票号查询,检索发票所针对的各个项目的所有发票,按创建日期排序,然后根据我将要查询的发票号(这是我坚持的位),计算该发票在该项目的总发票中的数量 为了更清楚,我的意思如下 URN_ID URN_Project_ID URN_Date 1 1 2012-03-17 2 3
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
$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,我只需要输出行号作为变量的回音,这是从上面的例子中得到的非常简单的东西。如果你能为我指出正确的方向,我将不胜感激。谢谢