2013-01-19 50 views
3

我有兩個表。可空主鍵

採購:

  • PurchaseId
  • SenderId
  • ReceiverId

客戶:

  • Customerid(小學唯一的)
  • CUSID(不初級不是唯一的,不允許使用NULL)
  • FirsName
  • LastName

我要讓所有購買用戶名和lastnames在客戶表中的一些報道。 我不能做任何關係。所有我的代碼給我錯誤或返回錯誤的結果。 請幫助我(接收者和發送者的值在客戶表中是相同的CUSID) 關係錯誤:因爲我的字段不允許爲空,所以我無法創建任何主鍵。

(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) 
+2

SQL Server的一個主鍵的要求是:**不能爲空**的和獨特的。你**不能**定義可空的主鍵。 –

回答

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 

好運。

+0

你能顯示你想要的輸出嗎? – sgeddes

+0

仍然困惑 - 您可以加入任何字段,包括NULL字段 - 您不必加入主鍵 - 大概,如果CUSID爲空,則不想返回該數據。這裏有一些SQL小提琴試圖幫助你:http://sqlfiddle.com/#!3/408de/2 – sgeddes

+0

PurchaseId SenderId SenderName ReceiverId ReceiverName 1 25 Corey 13 Alex 2 65 Tom 87 Adam(名字來自客戶表加入Customerid (未初級和允許空)和senderid,receiverid(未初級不爲空) – Sara

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 
+0

對不起,結果是不正確的。我之前做過。 – Sara

+0

客戶表和購買之間的最終連接怎麼樣?我如何編寫連接?FROM finex.tbl_PurchaseForms 在tbl_PurchaseForms.SenderUId = tbl_customers.CUSID上加入tbl_customers會得到錯誤。 在tbl_PurchaseForms.ReceiverUId上加入tbl_customers = tbl_customers.CUSID – Sara

+0

感謝每一個人,我做到了。 – Sara