0

私は次の見解を持っています:

SELECT     t.CompanyCode, t.FlatFileName, t.RecordNumber, t.Status, t.Branch, t.SalesMonthYear, t.SalesCashOrLimboCode, t.PageNumber, t.Driver, t.Truck, 
                      t.CommonProductCode, t.CashCharge, t.SpecialFunction, t.ProductCode, t.UnitOfEntry, t.TransactionBranch, t.AccountNumber, t.ReferenceNumber, t.TransactionDate, 
                      t.PercentFullOrWhenDueCode, t.Quantity, t.DeliveryAccountNumberForTankRentals, t.Amount, t.SalesTax, t.ProductCode2Amount, t.TankSerialNumber, t.SalesMonth, 
                      t.TaxCode, t.SubjectToTax, t.SalesTaxRate, t.ExiseTaxRate, t.FrankHasntDecidedWhatThisFieldIs_ProbablyCentury, t.OriginalSalesMonth, t.AutoCharge, 
                      t.ProductCode2, t.ProductCode2SpecialFunction, t.DiscountCode, t.DiscountRate, t.DiscountDays, t.Century, t.TRFRPD, t.OpenItemAmountPaid, 
                      t.OpenItemReferenceNumber, t.InvoiceFlag, t.InvoiceNumber, t.Time, t.GasQuantity, t.AnodeReading, t.Reading, t.Reason, t.InventorySerialNumber, t.SName, 
                      t.ErrorCode, t.MasterBillingBranchAccountNumber, t.LeaseOnFile, t.PuchaseOrderNumber, t.BillOfLaden, t.Latitude, t.Longitude, t.ContractGasPrice, t.Balance, 
                      t.DeliveryAccount, t.BranchAccountNumber, t.LineNumber, t.DateTimeEntered, t.UserThatEntered, t.WorkstationThatEntered, t.YearMonthDayPosted, 
                      t.HourMinutePosted, t.UserThatPosted, t.WorkstationThatPosted, t.CreditCardNumber, t.CreditCardExperationDate, t.CreditViolation, t.TransactionId, t.CorporationId, 
                      t.IsUpdated, t.IsAdded, t.ClearUpdateAndAdded, p.Description
FROM         Company.Product AS p LEFT OUTER JOIN
                      Company.[Transaction] AS t ON p.ProductCode = t.ProductCode AND p.CorporationId = t.CorporationId

私が達成しようとしている主なことは、製品テーブルから製品の説明を取得し、それをトランザクションテーブルに追加することです。ProductCodeに基づいている必要があります。

各トランザクションを1回だけ取得する必要がありますが、各トランザクションの複数のコピーを取得しています。それぞれの企業に製品が存在することを知っているので、それを見たからだと思いますか?

このウェブサイトから、LEFTOUTERJOINを使用すると書かれています。

この結合は、左側のテーブルのすべての行を、右側のテーブルの一致する行と一緒に返します。右側のテーブルに一致する列がない場合は、NULL値を返します。

説明にnullが含まれていないので、何が間違っているのかわかりません。

4

2 に答える 2

1

テーブルの順序を変更します。

SELECT  <yourcols>
FROM   company.[transaction] AS t 
LEFT OUTER JOIN company.product AS p 
   ON t.productcode = p.productcode
   AND t.corporationid = p.corporationid 
于 2012-12-26T16:26:46.590 に答える
0

製品ごとに複数のトランザクションがあるため、おそらく製品のトランザクションに参加することをお勧めします。私はあなたの参加で注文を交換します、そしてあなたのシナリオではあなたがクエリしているすべてのトランザクションに1-1の存在を期待するので私はOUTER参加にも使用しません(つまり、製品がないトランザクションはありません)

于 2012-12-26T16:24:52.680 に答える