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

Exemple de relation impliquant plusieurs entités

<p>Je n'ai trouvé aucun exemple de relations plusieurs-à-plusieurs MYSQL ici ou dans Google. Ce que je recherche, c'est un exemple très simple où php+mysql affiche les résultats d'une base de données. Quelqu'un peut-il écrire un exemple très simple ? </p>
P粉327903045P粉327903045419 Il y a quelques jours462

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

  • P粉288069045

    P粉2880690452023-08-28 18:15:19

    Ceci est un exemple simple et approximatif du SQL impliqué. Je ne pense pas qu'il soit nécessaire de confondre ce concept avec php. Récupérez simplement la collection comme n’importe quelle autre collection.

    Dans cet exemple, il existe de nombreux noms et de nombreuses couleurs. Les gens peuvent avoir plus d’une couleur préférée, et plusieurs personnes peuvent avoir la même couleur préférée. Donc plusieurs à plusieurs.

    ***** 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...

    Est-ce utile ?

    répondre
    0
  • P粉007288593

    P粉0072885932023-08-28 15:27:40

    Exemple de scénario : Étudiants et cours dans une université. Un étudiant donné peut suivre plusieurs cours et, naturellement, un cours comptera souvent 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 élève donné :

    SELECT
        `Course`.*
    FROM
        `Course`
        JOIN `CourseMembership` ON `Course`.`CourseID` = `CourseMembership`.`Course`
    WHERE
        `CourseMembership`.`Student` = 5678

    répondre
    0
  • Annulerrépondre