我目前正在设计一个发票系统,可以将发票分配给单独的项目。发票只会分配给一个项目。
目前我有一个 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
假设我查询了 6 号发票,因此项目是项目 1。本质上,我会将信息范围缩小到以下内容
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_ID、URN_PROJECT_ID、URN_Date、URN_Due_Terms、URN_Doc_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 作为值。
我对使用 @ 符号的语句一无所知,因此不知如何调试它。
任何帮助都会很好。
干杯。铝。