cari

Rumah  >  Soal Jawab  >  teks badan

Contoh perhubungan ramai-ke-banyak

<p>Saya tidak menemui sebarang contoh perhubungan banyak-ke-banyak MYSQL sama ada di sini atau di Google. Saya ingin melihat contoh yang sangat mudah menggunakan php+mysql untuk memaparkan hasil pangkalan data. Bolehkah seseorang menulis contoh yang sangat mudah? </p>
P粉785905797P粉785905797495 hari yang lalu713

membalas semua(2)saya akan balas

  • P粉763662390

    P粉7636623902023-08-19 09:13:10

    Berikut ialah contoh SQL yang cepat dan mudah. Saya rasa tidak perlu mengelirukan konsep ini dengan php. Ambil sahaja koleksi ini seperti koleksi lain.

    Dalam contoh ini, terdapat banyak nama dan banyak warna. Orang boleh mempunyai berbilang warna kegemaran dan ramai orang boleh mempunyai warna kegemaran yang sama. Oleh itu ia adalah hubungan ramai-ke-banyak.

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

    Adakah ini membantu?

    balas
    0
  • P粉827121558

    P粉8271215582023-08-19 00:58:42

    Contoh senario: Pelajar dan kursus di universiti. Pelajar tertentu mungkin didaftarkan dalam berbilang kursus, dan kursus biasanya mempunyai ramai pelajar.

    Contoh jadual, reka bentuk ringkas:

    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

    Cari semua pelajar yang berdaftar untuk kursus:

    SELECT
        `Student`.*
    FROM
        `Student`
        JOIN `CourseMembership` ON `Student`.`StudentID` = `CourseMembership`.`Student`
    WHERE
        `CourseMembership`.`Course` = 1234

    Cari semua kursus yang diambil oleh pelajar tertentu:

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

    balas
    0
  • Batalbalas