Click here to Skip to main content
15,886,199 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
Problem

How to trace this query to know the reason of why it return null records .

query below work in database and give me results but not give me any result in another database

How to debug or trace it to know why it not give me any result .

SQL
SELECT        TrxInvH.Trxtype, TrxInvH.TrxYear, TrxInvH.TrxSerial, TrxInvH.TrxDate, Items.ItemAraName, Items.ItemLatName, Units.UnitLatName,   
Stores.StoreAraName, Stores.StoreLatName, Units.UnitAraName, TrxInvF.displayQty, TrxInvF.Quantity, TrxInvF.Price, TrxInvF.Displayprice,   
trxtypeConfig.TrxArbName, trxtypeConfig.TrxEngName, TrxInvF.ItemCode, trxtypeConfig.BranchCode, Stores.StoreLatName AS Expr1,   
Stores.StoreAraName AS TPSTOREARA, CASE WHEN TrxInvF.Account = '' OR  
TrxInvF.Account IS NULL THEN TrxInvH.AccountID ELSE TrxInvF.Account END AS AccountCode,  
    (SELECT        AccAraName  
      FROM            Accounts  
      WHERE        (AccCode = (CASE WHEN TrxInvF.Account = '' OR  
                                TrxInvF.Account IS NULL THEN TrxInvH.AccountID ELSE TrxInvF.Account END))) AS AccaraName,  
    (SELECT        AccEngName  
      FROM            Accounts AS Accounts_3  
      WHERE        (AccCode = (CASE WHEN TrxInvF.Account = '' OR  
                                TrxInvF.Account IS NULL THEN TrxInvH.AccountID ELSE TrxInvF.Account END))) AS AccLatName, TrxInvF.SubLdgCode1,  
    (SELECT        SubLdgAraName  
      FROM            AllSubLedgerCode  
      WHERE        (TrxInvF.SubLdgCodeType1 = SubLdgTypeCode) AND (TrxInvF.SubLdgCode1 = SubLdgCode) AND (TrxInvF.BranchCode = BranchCode))   
AS SubAraName1,  
    (SELECT        SubLdgLatName  
      FROM            AllSubLedgerCode AS AllSubLedgerCode_26  
      WHERE        (TrxInvF.SubLdgCodeType1 = SubLdgTypeCode) AND (TrxInvF.SubLdgCode1 = SubLdgCode) AND (TrxInvF.BranchCode = BranchCode))   
AS SubLatName1, TrxInvF.SubLdgCode2,  
    (SELECT        SubLdgAraName  
      FROM            AllSubLedgerCode AS AllSubLedgerCode_25  
      WHERE        (TrxInvF.SubLdgCodeType2 = SubLdgTypeCode) AND (TrxInvF.SubLdgCode2 = SubLdgCode) AND (TrxInvF.BranchCode = BranchCode))   
AS SubAraName2,  
    (SELECT        SubLdgLatName  
      FROM            AllSubLedgerCode AS AllSubLedgerCode_24  
      WHERE        (TrxInvF.SubLdgCodeType2 = SubLdgTypeCode) AND (TrxInvF.SubLdgCode2 = SubLdgCode) AND (TrxInvF.BranchCode = BranchCode))   
AS SubLatName2, TrxInvF.SubLdgCode3,  
    (SELECT        SubLdgAraName  
      FROM            AllSubLedgerCode AS AllSubLedgerCode_23  
      WHERE        (TrxInvF.SubLdgCodeType3 = SubLdgTypeCode) AND (TrxInvF.SubLdgCode3 = SubLdgCode) AND (TrxInvF.BranchCode = BranchCode))   
AS SubAraName3,  
    (SELECT        SubLdgLatName  
      FROM            AllSubLedgerCode AS AllSubLedgerCode_22  
      WHERE        (TrxInvF.SubLdgCodeType3 = SubLdgTypeCode) AND (TrxInvF.SubLdgCode3 = SubLdgCode) AND (TrxInvF.BranchCode = BranchCode))   
AS SubLatName3, TrxInvF.SubLdgCode4,  
    (SELECT        SubLdgAraName  
      FROM            AllSubLedgerCode AS AllSubLedgerCode_21  
      WHERE        (TrxInvF.SubLdgCodeType4 = SubLdgTypeCode) AND (TrxInvF.SubLdgCode4 = SubLdgCode) AND (TrxInvF.BranchCode = BranchCode))   
AS SubAraName4,  
    (SELECT        SubLdgLatName  
      FROM            AllSubLedgerCode AS AllSubLedgerCode_20  
      WHERE        (TrxInvF.SubLdgCodeType4 = SubLdgTypeCode) AND (TrxInvF.SubLdgCode4 = SubLdgCode) AND (TrxInvF.BranchCode = BranchCode))   
AS SubLatName4, TrxInvF.SubLdgCode5,  
    (SELECT        SubLdgAraName  
      FROM            AllSubLedgerCode AS AllSubLedgerCode_19  
      WHERE        (TrxInvF.SubLdgCodeType5 = SubLdgTypeCode) AND (TrxInvF.SubLdgCode5 = SubLdgCode) AND (TrxInvF.BranchCode = BranchCode))   
AS SubAraName5,  
    (SELECT        SubLdgLatName  
      FROM            AllSubLedgerCode AS AllSubLedgerCode_18  
      WHERE        (TrxInvF.SubLdgCodeType5 = SubLdgTypeCode) AND (TrxInvF.SubLdgCode5 = SubLdgCode) AND (TrxInvF.BranchCode = BranchCode))   
AS SubLatName5, trxtypeConfig.CalcAvgPrice, trxtypeConfig.CalcFifoPrice, Items.AvgPrice1, Items.AvgPrice2, Items.TotalVal1, Items.TotalVal2,   
Items.TotalQty1, Items.TotalQty2, TrxInvF.CostAverage, TrxInvH.createuserid, TrxInvH.CreateDateAndTime, TrxInvH.UserId, TrxInvH.DateAndTime  
FROM            TrxInvH INNER JOIN  
TrxInvF ON TrxInvH.BranchCode = TrxInvF.BranchCode AND TrxInvH.Trxtype = TrxInvF.Trxtype AND TrxInvH.TrxYear = TrxInvF.TrxYear AND   
TrxInvH.TrxSerial = TrxInvF.TrxSerial INNER JOIN  
trxtypeConfig ON TrxInvF.BranchCode = trxtypeConfig.BranchCode AND TrxInvF.Trxtype = trxtypeConfig.trxtypecode INNER JOIN  
Units ON TrxInvF.Unitcode = Units.UnitCode INNER JOIN  
Items ON TrxInvF.ItemCode = Items.ItemCode INNER JOIN  
Stores ON TrxInvF.StoreId = Stores.StoreCode AND TrxInvF.BranchCode = Stores.BranchCode LEFT OUTER JOIN  
AllSubLedgerCode AS allsubledgercode_4 ON TrxInvF.SubLdgCode4 = allsubledgercode_4.SubLdgCode AND   
TrxInvF.SubLdgCodeType4 = allsubledgercode_4.SubLdgTypeCode AND TrxInvF.SubLdgBranch4 = allsubledgercode_4.BranchCode LEFT OUTER JOIN  
AllSubLedgerCode AS allsubledgercode_3 ON TrxInvF.SubLdgCode3 = allsubledgercode_3.SubLdgCode AND   
TrxInvF.SubLdgCodeType3 = allsubledgercode_3.SubLdgTypeCode AND TrxInvF.SubLdgBranch3 = allsubledgercode_3.BranchCode LEFT OUTER JOIN  
AllSubLedgerCode AS allsubledgercode_2 ON TrxInvF.SubLdgBranch2 = allsubledgercode_2.BranchCode AND   
TrxInvF.SubLdgCodeType1 = allsubledgercode_2.SubLdgTypeCode AND TrxInvF.SubLdgCode2 = allsubledgercode_2.SubLdgCode LEFT OUTER JOIN  
AllSubLedgerCode AS AllSubLedgerCode_17 ON TrxInvF.SubLdgCode1 = AllSubLedgerCode_17.SubLdgCode AND   
TrxInvF.SubLdgCodeType1 = AllSubLedgerCode_17.SubLdgTypeCode AND   
TrxInvF.SubLdgBranch1 = AllSubLedgerCode_17.BranchCode LEFT OUTER JOIN  
AllSubLedgerCode AS allsubledgercode_1 ON TrxInvH.BranchCode = allsubledgercode_1.BranchCode AND   
TrxInvH.TargetType = allsubledgercode_1.SubLdgTypeCode AND TrxInvH.TargetCode = allsubledgercode_1.SubLdgCode LEFT OUTER JOIN  
AllSubLedgerCode AS allsubledgercode_5 ON TrxInvF.SubLdgCode5 = allsubledgercode_5.SubLdgCode AND   
TrxInvF.SubLdgCodeType5 = allsubledgercode_5.SubLdgTypeCode AND TrxInvF.SubLdgBranch5 = allsubledgercode_5.BranchCode  WHERE 1 = 1 


What I have tried:

Query not return any records although it give me result but in another database
Posted
Updated 21-Mar-18 11:44am
v2
Comments
PIEBALDconsult 11-Mar-18 22:57pm    
It's probably having as much trouble reading it as I am. That's very difficult to parse, particularly without knowing the tables involved.
I strongly recommend against using subqueries as they tend to perform poorly. In the last few years I've been using Common Table Expression because they often perform better and I find them easier to test.

1 solution

Sorry, but your query is... ugly.

I counted the following number of occurrences of tables :
TableName        NoOfFroms NoOfJoins Total
Accounts         2         0         2
AllSubLedgerCode 10        6         16 (!!!)   
TrxInvH          1         0         1
TrxInvF          0         1         1
trxtypeConfig    0         1         1
Units            0         1         1
Items            0         1         1
Stores           0         1         1


What that means to you? Since a AllSubLedgerCode table is 16. times called, a performance of this query is far, far away from optimal.

Remove all subqueries, which you use to create single field. Use JOIN's[^]!
Here is excelent article about joins: Visual Representation of SQL Joins[^]

As to the "How to debug or trace it to know why it not give me any result."...
Follow throught that list of articles:
Troubleshooting and Analysis with Traces[^]
How To: Optimize SQL Queries (Tips and Techniques)[^]
Query Performance[^]
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900