2012-03-14 63 views
0

這是我的問題... 我正在做一個客戶端管理界面,將值保存到SQL 我正在使用SQL/PHP/HTML/JQUERY/CSS等......如何將多個相似的值保存到一條SQL記錄

當我爲每個客戶端輸入一次所有信息時,一切正常。 即。每個客戶端有1或2個電話號碼,一個地址等。

當我想存儲說一個客戶端的多個收據號碼時出現問題。 或即。同一客戶的多個訂單。

我可以開始一個而是通過一次我可能需要存儲100

什麼是做到這一點的最佳做法?

我想存儲在SQL中的單個文本記錄中用逗號分隔的ID 然後檢索值,將它們分開並提供。

做這種事情的最佳方法是什麼? 另外,我如何命令SQL將值添加到現有字符串的末尾而不是更新它? 每當需要類似的記錄時,我可以自動添加一列到sql嗎?

+0

SQL/PHP/HTML/JQUERY/CSS = PHP。我們知道它會發生什麼。 – Jon 2012-03-14 01:02:08

回答

5

列表你可以將它保存爲逗號分隔值,但是這是非常不好的做法,並最終成爲一個痛苦的維持。

你需要在這裏有SQL規範化。

例如,在收款的情況下,您有兩個表,一個用於客戶,具有唯一ID字段,另一個用於收據,具有兩列,即客戶ID和收據編號,因此您的客戶詳細信息:

Customers: 
CustomerId INT 
Address TEXT 
Email TEXT 

而另一表收入:

Receipts: 
CustomerID INT 
ReceiptNum VARCHAR(9) 

然後來獲取該客戶的所有收據,

SELECT * 
FROM Receipts 
WHERE CustomerID = @ID 

,並增加了新的收據:

INSERT INTO Receipts (CustomerId, ReceiptNum) 
VALUES (@ID, @Receipt) 

這是一個非常鬆散的描述,但我希望它給你的,你需要做的事情的想法。

更新:

爲了給你如何將尋找一個樣,如果你有2個客戶在客戶表:

CustomerId Address Email 
1   Here  [email protected] 
2   There [email protected] 

而且客戶1有2個收據,和客戶2有3個收據:

CustomerId ReceiptNum 
1   abcdde10 
1   qwerty10 
2   1234-1234 
2   0987-0987 
2   abcd-efgh 

所以這個想法是,對於每個額外的信息位,您只需要添加另一行。這樣,您可以爲一位客戶提供1位信息,而爲另一位客戶提供20位信息,但您不需要定義20 備用字段以防萬一。

+0

這是我的第二個猜測... 爲了確保我明白,在收據表上,您建議將列名稱設置爲:Receipt1,Receipt2,Receipt3等 我需要預先創建列嗎?還是有一些聰明的技巧告訴sql在最後創建一個新列,當需要一個新條目? 如何使用Column創建一個表爲:ClientID,ClientID,ClientID,並將每個收據ID存儲在它們下面? – krasatos 2012-03-14 10:51:50

+0

剛剛更新了我的答案。 – 2012-03-14 11:37:42

+0

謝謝,正是我需要的建議! – krasatos 2012-03-14 12:50:44

0

對此的最佳實踐是創建一個具有客戶端ID的客戶端表。然後有收據或訂單表格或客戶可能有多個表格的其他表格。在收據表中,您還可以指定客戶端ID,它充當客戶端表的一種「鏈接」或外鍵。然後你就可以相應地構建您的查詢檢索客戶的收據

相關問題