vấn đề của tôi là, tôi muốn lưu trữ một người có nhiều số điện thoại trong cơ sở dữ liệu. cho một biến duy nhất cho số sẽ chỉ lưu trữ một số cho mỗi số. bây giờ nếu tôi muốn thêm số điện thoại khác, nó sẽ tạo một bản ghi mới khác với cùng chi tiết nhưng số khác. Tôi muốn hiển thị tất cả các số này cùng nhau. có ai giúp được không?cách lưu trữ nhiều giá trị trong một trường trong cơ sở dữ liệu sql
Trả lời
Bạn có thể sử dụng một bảng thứ hai để lưu trữ các con số, và liên kết lại với một chính nước ngoài:
PersonTable: PersonId, Name, etc..
Bảng thứ hai sẽ tổ chức những con số ...
NumbersTable: NumberId, PersonId(fk), Number
Bạn có thể sau đó lấy các con số như thế này ...
SELECT p.Name, n.Number from PersonTable p Left Join NumbersTable n
on p.PersonId = n.PersonId
Đây là ví dụ đơn giản. Tôi đã sử dụng một số LEFT JOIN
ở đây trong trường hợp một người không cung cấp số của họ. Ngoài ra, đây chỉ là mã giả, do đó, không sử dụng Bảng trong tên.
Được giảm giá vì nó giống với câu trả lời trước đó. –
Tôi đã nhập bằng tay và câu trả lời của tôi giải thích cách tham gia các bảng. Đó là một lý do tồi tệ cho một Downvote! – christiandev
@DanBracuk, bạn đã downvoted một câu trả lời nhiều thông tin hơn, nhưng không có vấn đề với câu trả lời có lời khuyên yếu hơn? – christiandev
Bạn nên tạo các bảng riêng biệt cho Người và Số điện thoại.
CREATE TABLE Person(PersonId int IDENTITY(1,1) PRIMARY KEY)
CREATE TABLE Phone(
PersonId int,
PhoneNumber varchar(20),
CONSTRAINT PK_Phone PRIMARY KEY(PersonId,PhoneNumber),
CONSTRAINT FK_PersonId FOREIGN KEY(PersonId) REFERENCES Person(PersonId)
)
Tôi đoán liên kết này hữu ích để hiểu tại sao câu trả lời này chính xác: http://en.wikipedia.org/wiki/First_normal_form – Vartlok
yupp phương pháp này sẽ hoạt động .. cảm ơn bạn rất nhiều :) –
Bạn có thể lưu trữ nhiều dữ liệu dưới dạng giá trị được phân tách bằng dấu phân cách. Sử dụng đường ống (|) hoặc nghiêng (~) làm dấu phân tách. Và khi chúng tôi đang chèn giá trị mới hoặc cập nhật giá trị hiện tại, hãy kiểm tra xem số điện thoại đã tồn tại chưa. Nếu đã có sẵn một số dữ liệu trong cột số điện thoại, chỉ cần thêm dữ liệu đó với dấu phân cách + số điện thoại mới.
Đó là lời khuyên không tốt. Bạn không nên lưu trữ nhiều giá trị trong cùng một trường. – Linger
vi.wikipedia.org/wiki/First_normal_form – Vartlok
Điều gì sẽ xảy ra nếu bạn muốn tìm kiếm tất cả người dùng có 3 số điện thoại đầu tiên của họ là 'nnn' chẳng hạn? làm thế nào bạn sẽ truy vấn này? – christiandev
Bạn chỉ có thể thêm họ bằng dấu phẩy. Nếu bạn đang làm một webapp, bạn có thể làm cột điện thoại của bạn một chuỗi và json mã hóa chúng, sau đó bạn sẽ phải hỗ trợ cho số lượng vô tận của số điện thoại :)
Cách tốt nhất là:
- serialize điện thoại của bạn.no mảng,
- lưu trữ trong bảng của bạn,
- deserialize khi bạn muốn nhận điện thoại.không có.
- 1. Lưu trữ e-mail trong cơ sở dữ liệu SQL
- 2. Lưu trữ giá trị C# DateTimeOffset trong cơ sở dữ liệu SQL Server 2005
- 3. Cách tối ưu để lưu trữ giá trị datetime trong cơ sở dữ liệu SQLite (Delphi)
- 4. cách lưu trữ mật khẩu trong cơ sở dữ liệu?
- 5. Lưu trữ giá trị Boolean trong SQL?
- 6. cách lưu trữ các giá trị BigInteger trong cơ sở dữ liệu oracle
- 7. Cách lấy dữ liệu từ cơ sở dữ liệu SQL để lưu trữ trong một hộp tổ hợp - C#
- 8. Cập nhật trường bit sql trong cơ sở dữ liệu
- 9. Python, lưu trữ một dict trong cơ sở dữ liệu
- 10. Làm cách nào để lưu trữ quan hệ một đến nhiều trong cơ sở dữ liệu sql của tôi? (MySQL)
- 11. Lưu trữ Enums trong Cơ sở dữ liệu MySQL
- 12. Tư vấn lược đồ cơ sở dữ liệu để lưu trữ trường mẫu và giá trị trường
- 13. Lưu trữ JSON trong cơ sở dữ liệu msSQL?
- 14. Lưu trữ dữ liệu tĩnh trong một mảng hoặc trong một cơ sở dữ liệu?
- 15. Cách hiệu quả nhất để lưu trữ giá trị GUID trong cơ sở dữ liệu SQL Server
- 16. Lưu trữ dữ liệu XML trong cơ sở dữ liệu - nhiều bảng so với bán phá giá xml trong cột
- 17. Lưu trữ JSON vào cơ sở dữ liệu trong python
- 18. lưu trữ giá trị lâu dài trong cơ sở dữ liệu Android
- 19. Các đối tượng giá trị được lưu trữ trong cơ sở dữ liệu như thế nào?
- 20. Làm cách nào để lưu trữ băm trong cơ sở dữ liệu SQL Server bằng C#?
- 21. Lưu trữ thông tin EXIF trong Cơ sở dữ liệu
- 22. Lưu trữ Chứng chỉ X509 trong cơ sở dữ liệu
- 23. Lưu trữ thông tin OpenID trong cơ sở dữ liệu
- 24. Lưu trữ kích thước tệp trong cơ sở dữ liệu
- 25. Xóa một cơ sở dữ liệu ravendb trong khi ravendb đang chạy lưu trữ cơ sở dữ liệu khác
- 26. Lưu trữ khóa riêng trong cơ sở dữ liệu
- 27. Lưu trữ ASP.Net MVC Views trong cơ sở dữ liệu
- 28. Làm thế nào để lưu trữ một cây trong cơ sở dữ liệu SQL
- 29. Tăng trường cơ sở dữ liệu CakePHP bằng giá trị
- 30. Cách tốt nhất để lưu trữ nhiều Flags Trong Cơ sở dữ liệu
Thêm mô tả bảng và bản ghi mẫu để mô tả những gì bạn có và thứ bạn muốn .. – Jens
Bạn cũng có thể xác định 'trường văn bản' và bạn sẽ chèn một mảng' mảng' chứa tất cả các số điện thoại của bạn. –
Bạn có thể lưu trữ các số điện thoại dưới dạng số được phân tách bằng dấu phẩy và sau đó chia các số điện thoại bằng dấu phẩy làm dấu phân cách? –