Maison > Questions et réponses > le corps du texte
P粉7636623902023-08-19 09:13:10
Voici un exemple SQL simple et rapide. Je ne pense pas qu'il soit nécessaire de confondre ce concept avec php. Récupérez simplement cette collection comme n’importe quelle autre collection.
Dans cet exemple, il existe de nombreux noms et de nombreuses couleurs. Les gens peuvent avoir plusieurs couleurs préférées, et plusieurs personnes peuvent avoir la même couleur préférée. Il s’agit donc d’une relation plusieurs-à-plusieurs.
***** 表 ********** person -------- id - int name - varchar favColor ------------- id - int color - varchar person_color ------------ person_id - int (与person中的id匹配) color_id - int (与favColor中的id匹配) ****** 示例查询 ****** SELECT name, color FROM person LEFT JOIN person_color ON (person.id=person_id) LEFT JOIN favColor ON (favColor.id=color_id) ****** 示例查询的结果 ******* Name - Color --------------- John - Blue John - Red Mary - Yellow Timmy - Yellow Suzie - Green Suzie - Blue 等等...
Est-ce utile ?
P粉8271215582023-08-19 00:58:42
Exemple de scénario : Étudiants et cours dans une université. Un étudiant donné peut être inscrit à plusieurs cours, et un cours comptera généralement de nombreux étudiants.
Exemple de tableau, conception simple :
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
Retrouvez tous les étudiants inscrits à un cours :
SELECT `Student`.* FROM `Student` JOIN `CourseMembership` ON `Student`.`StudentID` = `CourseMembership`.`Student` WHERE `CourseMembership`.`Course` = 1234
Retrouvez tous les cours suivis par un étudiant spécifique :
SELECT `Course`.* FROM `Course` JOIN `CourseMembership` ON `Course`.`CourseID` = `CourseMembership`.`Course` WHERE `CourseMembership`.`Student` = 5678