我有两张table-
1)公司表格
[合同编号、软件名称、公司名称、供应商代码]
2)用户表格
【合同号、发票号、发票日期、发票金额、发票提交日期】
用#和粗体表示的字段是主键。
=>用户必须输入一个软件名,以获取其数据。
=>我必须构造一个查询,其中我必须以以下形式显示结果:
[合同#,软件#,公司#名称,发票#编号,发票#日期,发票#提交日期]
现在,
在用户窗体表中,一个合同号的名称下可以包含多个发票号。
一个合同只能在公司表格中出现一次
检索到的记录必须按最新发票日期分组
我的逻辑是:
我必须首先从company\ u form表中检索具有该软件名称的所有合同号。
我必须从用户表单表中查询该合同号,并显示从公司表单表中获取的每个匹配合同号的数据。
问题是我无法在sql中构造一个可以为我完成任务的查询。
请帮助我提出这个问题。
[ps]我将sql与php结合使用。
我试过这样一个问题:
我尝试了一种方法:
SELECT a.ContractNo,a.SoftwareName,a.CompanyName,b.InvoiceNo,b.InvoiceDate,b.InvAmount,b.InvoiceSubmitDate
FROM Company_Form as a,User_Form as b
WHERE b.ContractNo IN(SELECT ContractNo FROM Company_Form WHERE
SoftwareName='$Sname') AND a.ContractNo=b.ContractNo;
但我得到一个错误,子查询返回的行数超过1行。我能从这里得到帮助吗?
3条答案
按热度按时间xhv8bpkk1#
如果这个要求允许子查询返回多行,我建议您在主查询的where子句中使用in而不是=in。
请注意,我只是查看了查询,并没有完全理解要求。
谢谢。
093gszye2#
我工作了一段时间,终于找到了下面的问题,它就像一个魅力
如果有人需要帮助理解这个查询的逻辑,可以在下面发表评论。
6qqygrtg3#
我假设您正在试图找到用户选择的软件及其相应发票的最新价格。这里有一个方法可以做到这一点。如果这是测试你满意,我可以补充必要的解释。