Exemple de relation plusieurs-à-plusieurs
P粉785905797
P粉785905797 2023-08-18 11:04:20
0
2
679
<p>Je n'ai trouvé aucun exemple de relations plusieurs-à-plusieurs MYSQL, ni ici ni sur Google. J'aimerais voir un exemple très simple utilisant php+mysql pour afficher les résultats de la base de données. Quelqu'un peut-il écrire un exemple très simple ? </p>
P粉785905797
P粉785905797

répondre à tous(2)
P粉763662390

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粉827121558

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
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!