使用condition子句查询两个表中选定的列

insrf1ej  于 2021-06-25  发布在  Mysql
关注(0)|答案(3)|浏览(349)

我有两张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行。我能从这里得到帮助吗?

xhv8bpkk

xhv8bpkk1#

如果这个要求允许子查询返回多行,我建议您在主查询的where子句中使用in而不是=in。
请注意,我只是查看了查询,并没有完全理解要求。
谢谢。

093gszye

093gszye2#

我工作了一段时间,终于找到了下面的问题,它就像一个魅力

SELECT a.ContractNo,a.SoftwareName,a.CompanyName,b.InvoiceNo,b.InvoiceDate,b.InvAmount,b.ISD
     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;

如果有人需要帮助理解这个查询的逻辑,可以在下面发表评论。

6qqygrtg

6qqygrtg3#

我假设您正在试图找到用户选择的软件及其相应发票的最新价格。这里有一个方法可以做到这一点。如果这是测试你满意,我可以补充必要的解释。

select uf.Contract_No#, 
       cf.Software_Name,
       cf.Company_Name,
       uf.Invoice_No#, 
       uf.Invoice_Date,
       uf.Invoice_Amount,
       uf.Invoice_Submit_Date
from User_Form uf
inner join ( 
             -- Most recent sale of software
             select Contract_No#, max(Invoice_Date)
             from User_Form 
             group by Contract_No#
           ) latest
on ( 
    -- Filter via join for latest match records
    uf.Contract_No# = latest.Contract_No#
    and uf.Invoice_Date = latest.Invoice_Date
   )
inner join Company_Form cf
on cf.Contract_No# = uf.Contract_No#
where cf.Software_name = :software_name

相关问题