2012-03-14 72 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,它充当客户端表的一种“链接”或外键。然后你就可以相应地构建您的查询检索客户的收据

相关问题