【问题标题】:referencing three columns to same column in another table in sql server 2000将三列引用到sql server 2000中另一个表中的同一列
【发布时间】:2013-02-20 07:27:19
【问题描述】:

我有一个关于SQL Server 2000 的问题,我需要从数据库中获取报告。我有一个名为Automation 的数据库,其中包含一组表来处理我们应用程序的票务流程查询。

我需要从数据库中提取一份报告,该报告应包含票号用户信息,例如谁输入、接收、编辑、查看了该票。

我需要数据库中的这些字段

Ticketnumber
billnumber
companyname
enteredby(username)
entereddate
recievedby(username)
recieveddate
editedby(Employeename)
editeddate
reviewedby(ReviewerName)
revieweddate
postedby(Managername)
posteddate

我有三张桌子
1>VPP_VendorBilldetails

BillentryID | ticketnumber | billnumber | VENDORNAME,BILLNUMBER,COSTCENTERNAME,BILLAMOUNT,TICKETDATE,BILLDATE | companyID(not companyname) | billdate | Enteredby(userid)| entereddate | recievedby(userid) | recieveddate | editedby(userid) | editeddate | reviewedby(userid) | revieweddate | postedby(userid) | posteddate

2> Users

UserID | employeeID | employeename |loginID| Password | usertype | status

3> VPP_ClientCompanyDetails :

companyid | companyname | companyaddress | status

我已经写了这个查询,但是我得到了所有三个类别的相同员工姓名:

  SELECT CLIENTCOMPANYNAME,  TICKETNUMBER,VENDORNAME,BILLNUMBER,COSTCENTERNAME,BILLAMOUNT,TICKETDATE,BILLDATE,
    RECIEVEDDATE,EMPLOYEENAME AS EXECUTIVENAME,
        VPP_VENDORBILLDETAILS.MODIFIEDDATE,
        EMPLOYEENAME AS REVIEWERNAME,EMPLOYEENAME AS POSTEDBY,POSTEDDATE,ERRORCODE,
        IMPACTCODE,ROOTCAUSE,REVIEWERREMARKS
        FROM 
    VPP_VENDORBILLDETAILS 

    INNER JOIN 
    VPP_CLIENTCOMPANYDETAILS 
    ON VPP_VENDORBILLDETAILS.BILLENTEREDCOMPANYID = VPP_CLIENTCOMPANYDETAILS.CLIENTCOMPANYID

    INNER JOIN USERS 
    ON VPP_VENDORBILLDETAILS.MODIFIEDBY = USERS.USERID

    WHERE CONVERT(VARCHAR(12),CONVERT(DATETIME,POSTEDDATE,103),101) 
        BETWEEN CONVERT(DATETIME,CONVERT(VARCHAR(12),getdate()-7,100),101) 
        AND CONVERT(DATETIME,CONVERT(VARCHAR(12),getdate()-1,100),101)

        AND VPP_CLIENTCOMPANYDETAILS.STATUS = 1 AND VPP_VENDORBILLDETAILS.STATUS = 1 AND USERS.STATUS = 1 AND ERRORCODE IS NOT NULL AND TALLYID IS NOT NULL

        ORDER BY CLIENTCOMPANYNAME ASC

请检查并帮助我解决此问题

请帮我提取上述表格的报告..

【问题讨论】:

  • 没有显示任何努力或尝试。
  • 嗨 Mitch.. 这是我第一次登录并问了 4 个问题.. 请让我知道我要提什么??
  • 简单:向我们展示您的尝试。
  • 米奇:请查看上方
  • 请帮帮我

标签: sql-server


【解决方案1】:

试试这个:

SELECT CLIENTCOMPANYNAME,  TICKETNUMBER,VENDORNAME,BILLNUMBER,COSTCENTERNAME,BILLAMOUNT,TICKETDATE,BILLDATE,
    RECIEVEDDATE,U1.EMPLOYEENAME AS EXECUTIVENAME,
        VPP_VENDORBILLDETAILS.MODIFIEDDATE,
        U2.EMPLOYEENAME AS REVIEWERNAME,U3.EMPLOYEENAME AS POSTEDBY,POSTEDDATE,ERRORCODE,
        IMPACTCODE,ROOTCAUSE,REVIEWERREMARKS
        FROM 
    VPP_VENDORBILLDETAILS 

    INNER JOIN 
    VPP_CLIENTCOMPANYDETAILS 
    ON VPP_VENDORBILLDETAILS.BILLENTEREDCOMPANYID = VPP_CLIENTCOMPANYDETAILS.CLIENTCOMPANYID

    INNER JOIN USERS U1
    ON VPP_VENDORBILLDETAILS.recievedby = U1.USERID

    INNER JOIN USERS U2
    ON VPP_VENDORBILLDETAILS.MODIFIEDBY = U2.USERID

    INNER JOIN USERS U3
    ON VPP_VENDORBILLDETAILS.postedby = U3.USERID


    WHERE CONVERT(VARCHAR(12),CONVERT(DATETIME,POSTEDDATE,103),101) 
        BETWEEN CONVERT(DATETIME,CONVERT(VARCHAR(12),getdate()-7,100),101) 
        AND CONVERT(DATETIME,CONVERT(VARCHAR(12),getdate()-1,100),101)

        AND VPP_CLIENTCOMPANYDETAILS.STATUS = 1 AND VPP_VENDORBILLDETAILS.STATUS = 1 AND USERS.STATUS = 1 AND ERRORCODE IS NOT NULL AND TALLYID IS NOT NULL

        ORDER BY CLIENTCOMPANYNAME ASC

【讨论】:

  • 我明白了.. 非常感谢.. 非常感谢.. 我从来没有想过这样做.. 超级 ravi.. 非常感谢..
  • 我还有一个问题,最近我在“VPP_VENDORBILLDETAILS”表中添加了四个新字段,这四个字段将由审阅者从他的登录名中更新,我在应用程序中设置了必填项,用户已输入这些细节在处理下一步之前...发生的事情是只有 1 或 2 个字段 r 更新不是全部并且剩余变为空白.. 我不知道如何找到这个问题.. 当我为这些生成报告时我会知道详情..
  • 您是否检查过是否所有内容都已传递给 DB?调试,你会找到解决办法的。
  • 感谢 ravi,但我在发布给用户之前已经测试了应用程序。所有四个字段都传递给 DB ......但我不知道用户如何使用它......
猜你喜欢
  • 2011-05-02
  • 1970-01-01
  • 2019-01-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-28
  • 1970-01-01
相关资源
最近更新 更多