3

私は2つのテーブルを持っています。

購入:

  • PurchaseId
  • SenderId
  • ReceiverId

顧客:

  • Customerid(プライマリ固有)
  • CUSID(プライマリではない - 一意でない - null を許可)
  • FirsName
  • LastName

顧客テーブルのユーザー名と姓を使用して、すべての購入からいくつかのレポートを作成したいと考えています。すべてのコードでエラーが発生するか、間違った結果が返されます。私を助けてください。

(select (tbl_Customers.FirstName + '-' +  tbl_Customers.LastName) as receiver
FROM         tbl_PurchaseForms
INNER JOIN
tbl_Customers ON tbl_PurchaseForms.ReceiverUId = tbl_Customers.CUSID) 
or
(select (tbl_Customers.FirstName + '-' +  tbl_Customers.LastName) as sender
FROM         tbl_PurchaseForms
INNER JOIN
tbl_Customers ON tbl_PurchaseForms.SenderUId = tbl_Customers.CUSID) 
4

2 に答える 2

0
Select p.*
,(Select  c.FirstName + '-' +  c.LastName  from customers c where c.CUSID  = P.ReceiverId) as  receiver
,(Select  c.FirstName + '-' +  c.LastName  from customers c where c.CUSID  = P.SenderId) as  Sender
from purchase p

一方、購入はこれを可能にするように設計する必要があります

Select p.*
,(Select  c.FirstName + '-' +  c.LastName  from customers c where c.Customerid  = P.ReceiverId) as  receiver
,(Select  c.FirstName + '-' +  c.LastName  from customers c where c.Customerid  = P.SenderId) as  Sender
from purchase p
于 2013-01-19T07:04:33.257 に答える
0

確かにあなたの質問には少し混乱していますが、cusid フィールドにリンクして、購入テーブルから何かを受け取った、または送ったすべての顧客を返そうとしているようですね?

もしそうなら、このようなものがうまくいくはずです(送信者と受信者を区別する必要がある場合は、購入タイプと呼ばれる追加の列を含めました):

SELECT 
    'Sender' as PurchaseType, 
    C.FirstName, 
    C.LastName
FROM Customers C 
    JOIN Purchase P ON C.CUSID  = P.SenderId
UNION 
SELECT 
    'Receiver' as PurchaseType, 
    C.FirstName, 
    C.LastName
FROM Customers C 
    JOIN Purchase P ON C.CUSID  = P.ReceiverId

幸運を。

于 2013-01-19T02:23:56.970 に答える