Maison  >  Questions et réponses  >  le corps du texte

Exemple de relation plusieurs-à-plusieurs

<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粉785905797P粉785905797399 Il y a quelques jours642

répondre à tous(2)je répondrai

  • P粉763662390

    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 ?

    répondre
    0
  • P粉827121558

    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

    répondre
    0
  • Annulerrépondre