Tôi chưa tìm thấy bất kỳ ví dụ về mối quan hệ nhiều-nhiều-nhiều MYSQL nào tại đây và trong google. Những gì tôi đang tìm kiếm là để xem một ví dụ rất đơn giản với php + mysql hiển thị kết quả của cơ sở dữ liệu. Ai có thể viết một ví dụ rất đơn giản?Các ví dụ về mối quan hệ nhiều-nhiều-số
Trả lời
Ví dụ: sinh viên và các khóa học tại một trường đại học. Một học sinh nhất định có thể tham gia nhiều khóa học, và dĩ nhiên một khóa học thường có nhiều sinh viên.
bảng Ví dụ, thiết kế đơn giản:
CREATE TABLE `Student` (
`StudentID` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`FirstName` VARCHAR(25),
`LastName` VARCHAR(25) NOT NULL,
PRIMARY KEY (`StudentID`)
) ENGINE=INNODB CHARACTER SET utf8 COLLATE utf8_general_ci
CREATE TABLE `Course` (
`CourseID` SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
`Code` VARCHAR(10) CHARACTER SET ascii COLLATE ascii_general_ci NOT NULL,
`Name` VARCHAR(100) NOT NULL,
PRIMARY KEY (`CourseID`)
) ENGINE=INNODB CHARACTER SET utf8 COLLATE utf8_general_ci
CREATE TABLE `CourseMembership` (
`Student` INT UNSIGNED NOT NULL,
`Course` SMALLINT UNSIGNED NOT NULL,
PRIMARY KEY (`Student`, `Course`),
CONSTRAINT `Constr_CourseMembership_Student_fk`
FOREIGN KEY `Student_fk` (`Student`) REFERENCES `Student` (`StudentID`)
ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `Constr_CourseMembership_Course_fk`
FOREIGN KEY `Course_fk` (`Course`) REFERENCES `Course` (`CourseID`)
ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=INNODB CHARACTER SET ascii COLLATE ascii_general_ci
Tìm tất cả học sinh đăng ký một khóa học:
SELECT
`Student`.*
FROM
`Student`
JOIN `CourseMembership` ON `Student`.`StudentID` = `CourseMembership`.`Student`
WHERE
`CourseMembership`.`Course` = 1234
Tìm tất cả các khóa học thực hiện bởi một sinh viên đưa ra:
SELECT
`Course`.*
FROM
`Course`
JOIN `CourseMembership` ON `Course`.`CourseID` = `CourseMembership`.`Course`
WHERE
`CourseMembership`.`Student` = 5678
Dưới đây là một ví dụ nhanh và bẩn của SQL liên quan. Tôi không thấy bất kỳ nhu cầu để lúng túng các khái niệm với php. Chỉ cần lấy bộ như bạn sẽ làm bất kỳ cái nào khác.
Trong ví dụ này, có nhiều tên và nhiều màu sắc. Mọi người được phép có nhiều màu yêu thích và nhiều người có thể có cùng màu yêu thích. Do đó nhiều đến nhiều.
***** Tables **********
person
--------
id - int
name - varchar
favColor
-------------
id - int
color - varchar
person_color
------------
person_id - int (matches an id from person)
color_id - int (matches an id from favColor)
****** Sample Query ******
SELECT name, color
FROM person
LEFT JOIN person_color ON (person.id=person_id)
LEFT JOIN favColor ON (favColor.id=color_id)
****** Results From Sample Query *******
Name - Color
---------------
John - Blue
John - Red
Mary - Yellow
Timmy - Yellow
Suzie - Green
Suzie - Blue
etc...
Điều đó có hữu ích không?
SELECT a.a_id, b.b_id, b.b_desc,
CASE WHEN x.b_id IS NULL THEN 'F' ELSE 'T' END AS selected
FROM a
CROSS JOIN b
LEFT JOIN x ON (x.a_id = a.a_id AND x.b_id = b.b_id)
WHERE (a.a_id = 'whatever')
Xin vui lòng cho lời giải thích với câu trả lời của bạn –
mysql> SELECT * FROm products;
+----+-----------+------------+
| id | name | company_id |
+----+-----------+------------+
| 1 | grechka | 1 |
| 2 | rus | 1 |
| 3 | makaronu | 2 |
| 4 | yachna | 3 |
| 5 | svuniacha | 3 |
| 6 | manka | 4 |
+----+-----------+------------+
6 rows in set (0.00 sec)
mysql> SELECT * FROm company;
+----+----------+
| id | name |
+----+----------+
| 1 | LVIV |
| 2 | KIEV |
| 3 | KHarkiv |
| 4 | MADRID |
| 5 | MaLIN |
| 6 | KOROSTEN |
+----+----------+
6 rows in set (0.00 sec)
mysql> SELECT * FROm many_many;
+------------+---------+
| product_id | city_id |
+------------+---------+
| 1 | 1 |
| 1 | 3 |
| 2 | 3 |
| 1 | 2 |
| 1 | 4 |
| 2 | 4 |
| 2 | 1 |
| 3 | 1 |
+------------+---------+
8 rows in set (0.00 sec)
mysql> SELECT products.name,company.name FROM products JOIN many_many ON many_
ny.product_id =products.id JOIN company ON company.id= many_many.city_id;
+----------+---------+
| name | name |
+----------+---------+
| grechka | LVIV |
| grechka | KHarkiv |
| grechka | KIEV |
| grechka | MADRID |
| rus | KHarkiv |
| rus | MADRID |
| rus | LVIV |
| makaronu | LVIV |
+----------+---------+
8 rows in set (0.00 sec)
- 1. Ví dụ truy vấn trong mối quan hệ nhiều-nhiều-
- 2. Django: Ví dụ về các mối quan hệ chung sử dụng khung nội dung?
- 3. Mối quan hệ Laravel
- 4. Nhiều mối quan hệ với dữ liệu bổ sung về mối quan hệ
- 5. Tìm hiểu các mối quan hệ và mối quan hệ dữ liệu của Orchard
- 6. Sqlalchemy, mối quan hệ và mối quan hệ
- 7. Ví dụ về các ví dụ điển hình
- 8. Phân rã một mối quan hệ ternary vào mối quan hệ nhị phân
- 9. IDbSetExtensions.AddOrUpdate và các mối quan hệ
- 10. Cài đặt danh bạ (ví dụ: bộ lọc chỉ liên hệ) Ví dụ về mã Android
- 11. SQLAlchemy - order_by về mối quan hệ cho bảng tham gia
- 12. REST - mở rộng mối quan hệ
- 13. SQL cho mối quan hệ phân cấp
- 14. Lọc mối quan hệ Nhiều-Nhiều từ trường Mối quan hệ ở Django
- 15. séc JPQL nhiều-nhiều mối quan hệ
- 16. Fetch Mối quan hệ Objects
- 17. Yii nhiều mối quan hệ
- 18. cách tránh trùng lặp trong mối quan hệ has_many: thông qua mối quan hệ?
- 19. Ví dụ siêu đơn giản về quan sát C#/quan sát được với các đại biểu
- 20. Ví dụ về JGraphT
- 21. Cách tiếp cận tốt nhất cho việc lưu trữ One-Nhiều mối quan hệ - thực tiễn Ví dụ/Dilemma
- 22. Ví dụ về Winsock?
- 23. Tham chiếu tuần hoàn trong mối quan hệ nhiều chiều đến nhiều mối quan hệ
- 24. Ví dụ về MultiSelectListPreference
- 25. Ví dụ về D.ccurl
- 26. Ví dụ về pysmb
- 27. Làm thế nào để có mối quan hệ với một mối quan hệ luôn được nhúng
- 28. Cách lưu trữ các mối quan hệ hai chiều
- 29. MySQL mối quan hệ truy vấn
- 30. Các mối quan hệ cơ sở dữ liệu chéo EF4
Xem này: http://www.tonymarston.net/php-mysql/many-to-many.html – nc3b