Contoh perhubungan yang melibatkan pelbagai entiti
P粉327903045
P粉327903045 2023-08-27 21:44:53
0
2
509
<p>Saya tidak menemui sebarang contoh perhubungan banyak-ke-banyak MYSQL di sini atau di Google. Apa yang saya cari ialah contoh yang sangat mudah di mana php+mysql memaparkan hasil daripada pangkalan data. Bolehkah seseorang menulis contoh yang sangat mudah? </p>
P粉327903045
P粉327903045

membalas semua(2)
P粉288069045

Ini adalah contoh mudah dan kasar bagi SQL yang terlibat. Saya rasa tidak perlu mengelirukan konsep ini dengan php. Hanya ambil semula koleksi seperti koleksi lain.

Dalam contoh ini, terdapat banyak nama dan banyak warna. Orang ramai boleh mempunyai lebih daripada satu warna kegemaran, dan ramai orang boleh mempunyai warna kegemaran yang sama. Oleh itu banyak-ke-banyak.

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

Adakah ini membantu?

P粉007288593

Contoh senario: Pelajar dan kursus di universiti. Pelajar tertentu mungkin mengambil beberapa kursus, dan secara semula jadi, kursus selalunya 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
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan