Personally, I'd format it like this to be the most readable:

  SELECT PH.POrder            as POrder,
         PH.EntryDate         as EntryDate,
         PH.ClientCode        as ClientCode,
         CL.ClientName        as ClientName,
         PM.Lines             as Lines,
         PD.LineNo            as LineNo,
         PD.StockCode         aa StockCode,
         PD.Price             as Price,
         PD.OrderQty          as OrderQty,
         PD.OrderQty*PD.Price as TotCost
    FROM SAPSystemCompanyAX.dbo.PorMasterHeader  as PH,
         SAPSystemCompanyAX.dbo.PorMaster        as PM,
         SAPSystemCompanyAX.dbo.PorMasterDetail  as PD,
         SAPSystemCompanyAX.dbo.AprClients       as CL
   WHERE PD.POrder = PH.POrder
     AND PM.POrder = PH.POrder
     AND PD.LineNo > 1
     AND CL.ClientCode = PH.Client
ORDER BY ClientName, POrder, LineNo

or, if you prefer the JOIN syntax:

  SELECT PH.POrder            as POrder,
         PH.EntryDate         as EntryDate,
         PH.ClientCode        as ClientCode,
         CL.ClientName        as ClientName,
         PM.Lines             as Lines,
         PD.LineNo            as LineNo,
         PD.StockCode         aa StockCode,
         PD.Price             as Price,
         PD.OrderQty          as OrderQty,
         PD.OrderQty*PD.Price as TotCost
    FROM SAPSystemCompanyAX.dbo.PorMasterHeader  as PH
    JOIN SAPSystemCompanyAX.dbo.PorMaster        as PM
      ON PM.POrder = PH.POrder
    JOIN SAPSystemCompanyAX.dbo.PorMasterDetail  as PD
      ON PD.POrder = PH.POrder
    JOIN SAPSystemCompanyAX.dbo.AprClients       as CL
      ON CL.ClientCode = PH.Client
   WHERE PD.LineNo > 1
ORDER BY ClientName, POrder, LineNo

I find gratuitous quoting of symbols somewhat obnoxious and distasteful, as 
well as the propensity to (include (extraneous) (brackets) just) for the (sake 
(of (adding (brackets)))).  I see that your original obviously-ms-generated 
query didn't generate its usual crapload of () -- or perhaps you removed them 
already :)

---
Theory is when you know everything but nothing works.  Practice is when 
everything works but no one knows why.  Sometimes theory and practice are 
combined:  nothing works and no one knows why.

>-----Original Message-----
>From: sqlite-users-bounces at mailinglists.sqlite.org [mailto:sqlite-users-
>bounces at mailinglists.sqlite.org] On Behalf Of R.Smith
>Sent: Monday, 16 March, 2015 11:26
>To: sqlite-users at mailinglists.sqlite.org
>Subject: Re: [sqlite] When to disambiguate column names in queries?
>
>
>On 2015-03-16 06:16 PM, Drago, William @ CSG - NARDA-MITEQ wrote:
>> All,
>>
>> Some of my Select statements are pretty long and I'm starting to think
>it'd be a good idea to always include table names of columns instead of
>just when they are not unique. This would make the Select statements
>longer, but perhaps easier to understand if the reader knows where each
>column is from.
>>
>> Any thoughts on this? I realize something like this can be highly
>subjective, but I'm wondering if there's a generally accepted practice in
>the SQLite world.
>
>I won't try to imagine this applies to the SQLite or any other SQL
>world, but I've had good success (In terms of always understanding
>queries that needs to be referred back to after some months and
>legibility to others plus zero SQL engine confusion or incorrect
>queries) when using very short aliasing as a standard.
>
>I've started the practice out of necessity using MS SQL where automated
>queries by default append the table-name to every column which made it
>almost illegible and fills up the screen with nonsense text making the
>query hard to read from among the riffraff.  (People using MS Query via
>Excel might be familiar with this example).
>
>A typical Query offered by some designer might start out like this:
>
>    SELECT PorMasterHeader.POrder, PorMasterHeader..EntryDate,
>    PorMasterHeader.CLientCode, AprClients.ClientName, PorMaster.Lines,
>    PorMasterDetail.LineNo, PorMasterDetail.StockCode,
>    PorMasterDetail.Price, PorMasterDetail.OrderQty,
>    (PorMasterDetail.OrderQty*PorMasterDetail.Price) AS TotCost
>    FROM [SAPSystemCompanyAX].[dbo].[PorMasterHeader] PorMasterHeader,
>    [SAPSystemCompanyAX].[dbo].[PorMaster] PorMaster,
>    [SAPSystemCompanyAX].[dbo].[PorMasterDetail] PorMasterDetail,
>    [SAPSystemCompanyAX].[dbo].[AprClients] AprClients
>    WHERE PorMasterDetail.POrder=PorMasterHeader.POrder AND
>    PorMaster.POrder=PorMasterHeader.POrder  AND
>    PorMasterDetail.LineNo>1AND
>AprClients.ClientCode=PorMasterHeader.Client
>    ORDER BY AprClients.ClientName, PorMasterHeader.POrder,
>    PorMasterDetail.LineNo
>
>
>
>which is a wall-of-text mess...
>Making use of nothing more than short clear aliases and better
>indentation fixes it to read like this:
>
>    SELECT PH.POrder, PH..EntryDate, PH.CLientCode, CL.ClientName,
>    PM.Lines, PD.LineNo,
>            PD.StockCode, PD.Price, PD.OrderQty, (PD.OrderQty*PD.Price)
>    AS TotCost
>       FROM [SAPSystemCompanyAX].[dbo].[PorMasterHeader] PH,
>    [SAPSystemCompanyAX].[dbo].[PorMaster] PM,
>            [SAPSystemCompanyAX].[dbo].[PorMasterDetail] PD,
>            [SAPSystemCompanyAX].[dbo].[AprClients] CL
>      WHERE PD.POrder=PH.POrder  AND PM.POrder=PH.POrder AND PD.LineNo>1
>    AND CL.ClientCode=PH.Client
>      ORDER BY CL.ClientName, PM.POrder, PD.LineNo
>
>
>which is legible to all, works always exactly (no column name is left to
>ambiguity) and easy to understand and is DB-Engine independent.
>
>The best part being, the more convoluted the query, the larger the
>space-saving.
>
>Note: It also helps to have a bit of convention in place, such as ALWAYS
>aliasing [AprClients] to CL which will make you "see" the meaning of a
>query faster over time - but be careful, it may happen that someone else
>aliases some other table to CL and if you don't check it, might end up
>spending hours chasing obscure bugs.
>
>Good luck,
>Ryan
>_______________________________________________
>sqlite-users mailing list
>sqlite-users at mailinglists.sqlite.org
>http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users



Reply via email to