Ben herhangi bir MYSQL çok-çok ilişkileri örnekler burada ve google bulamadı. Ne arıyorum veritabanının sonuçlarını gösteren php + mysql ile çok basit bir örnek görmek için. Herkes çok basit bir örnek yazabilir miyim?
Örnek senaryo: Bir üniversitede öğrenciler ve dersleri. Belirli bir öğrenci çeşitli derslerle ilgili olabilir, ve doğal bir ders genellikle birçok öğrencimiz olacak.
Örnek tablolar, basit bir tasarım:
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
Bir ders için kayıtlı tüm öğrencilere bul:
SELECT
`Student`.*
FROM
`Student`
JOIN `CourseMembership` ON `Student`.`StudentID` = `CourseMembership`.`Student`
WHERE
`CourseMembership`.`Course` = 1234
Belirli bir öğrenci tarafından alınan tüm dersleri bulabilirsiniz:
SELECT
`Course`.*
FROM
`Course`
JOIN `CourseMembership` ON `Course`.`CourseID` = `CourseMembership`.`Course`
WHERE
`CourseMembership`.`Student` = 5678
Burada yer alan SQL hızlı ve kirli bir örnek. Ben php ile kavramını çamurlu için herhangi bir ihtiyaç görmüyorum. Sadece başka olacak gibi kümesi almak.
Bu örnekte, birçok isim ve birçok renk vardır. İnsanlar birden fazla favori rengi için izin verilir, ve birçok kişi aynı favori renk olabilir. Bu nedenle birçok çok.
***** 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...
Bu yardımcı olur mu?