2011-09-12 142 views
0

你好我正在制定一個預訂系統,我有麻煩與我的桌子有人可以幫我解決我的問題。 我有一個表客戶和一個表預訂。 我的客戶表處理所有客戶的個人信息,預訂處理預訂詳細信息。數據庫插入幫助?

我的客戶表有一個客戶ID,它是主鍵和自動增量。和 我的預定表有一個預留ID,它是一個主鍵和自動遞增。

我的問題是...我怎麼能連接兩個?

我有一個很大的問題,如何加入他們在我的選擇聲明,因爲我不知道我會加入什麼樣的價值觀。 *注:順便說一句,我使用的是C#winform,我將添加的客戶和添加預訂的詳細信息分開。我也想知道如果我能包括2 INSERT語句中的一個按鈕,或將它們添加seperately ..

+1

如果您還不熟悉數據庫標準化,那麼您可以熟悉一下數據庫標準化。這會給你一個關於密鑰和外鍵的工作原理,以及它們爲什麼重要。 http://en.wikipedia.org/wiki/Database_normalization瞭解如何標準化數據庫是瞭解如何使用SQL聯接進行非規範化(扁平化)的第一步。 – EtherDragon

回答

2

使用SQL JOIN statement在你的SELECT查詢:

SELECT c.CustomerName, r.ReservationTime 
FROM reservation r 
JOIN customer c ON r.CustomerId = c.CustomerId 

編輯:這聽起來像您有無法理解如何獲取新創建的CustomerId,以便將其包含在Reservation表中。這裏的關鍵是LAST_INSERT_ID()。插入到Customer後,從LAST_INSERT_ID()獲取值 - 即新創建的CustomerId。您可以在插入保留時使用該值。例如:

INSERT INTO Customer (CustomerName) 
VALUES ('Joe Schmoe'); 

INSERT INTO Reservation (ReservationTime, CustomerId) 
VALUES ('2011-09-12 18:30:00', LAST_INSERT_ID()); 

赦免語法錯誤 - SQL Server是我的主要語言,如果你還沒有收集到。

+0

我明白你的觀點。但是,我怎麼知道我將在預訂表中放入什麼customerID?我怎麼知道那個預訂有customerID 1?這是我的問題T_T –

+0

請看['@@ Identity'](http://msdn.microsoft.com/zh-cn/library/ms187342.aspx)。在您插入Customer表後,在Reservation表中使用'@@ Identity'值作爲CustomerId。 – gilly3

+0

謝謝格利先生。那麼,這究竟會是怎樣的呢? –

1

那麼,你的預定表也應該有一個客戶ID。
據我瞭解你,情況並非如此。
但它應該是這樣的,因爲每個保留屬於一個客戶。

然後,您可以將兩個表格都加入到客戶ID中。

+0

先生,我會怎麼知道custID有什麼保留? –

+0

您的用於保存預訂的UI看起來像什麼?您的用戶可能不得不選擇預訂的客戶,對嗎?您需要將該客戶的ID插入到預訂表中。 –

+0

所以。我會在我的數據庫中擁有與所有客戶的組合框,並且用戶將選擇哪個客戶進行預訂? –