0
我需要一些認真的幫助。這是... 假設我有一個'用戶'表中的字段(userId,name)。現在我需要從與此用戶有關的其他表中獲取多項信息。有些項目是相似的,所以需要捆綁在一起。從mysql數據庫中選擇多個表(在單個字段中返回多個項目)
現在我也有其他幾個表:
CREATE TABLE app.phones (
`id` INT NOT NULL AUTO_INCREMENT ,
`userId` INT NOT NULL ,
`phone` VARCHAR(16) NOT NULL ,
PRIMARY KEY (`id`)
) ENGINE = InnoDB;
CREATE TABLE app.emails (
`id` INT NOT NULL AUTO_INCREMENT ,
`userId` INT NOT NULL ,
`email` VARCHAR(32) NOT NULL ,
PRIMARY KEY (`id`)
) ENGINE = InnoDB;
CREATE TABLE app.contact_methods (
`id` INT NOT NULL AUTO_INCREMENT ,
`userId` INT NOT NULL ,
`method` ENUM('phone', 'email') NOT NULL,
`methodId` INT NOT NULL ,
PRIMARY KEY (`id`)
) ENGINE = InnoDB;
CREATE TABLE app.groups (
`id` INT NOT NULL AUTO_INCREMENT ,
`groupName` VARCHAR(16) NOT NULL ,
PRIMARY KEY (`id`)
) ENGINE = InnoDB;
CREATE TABLE app.users_groups (
`id` INT NOT NULL AUTO_INCREMENT ,
`userId` INT NOT NULL ,
`groupId` INT NOT NULL ,
PRIMARY KEY (`id`)
) ENGINE = InnoDB;
正如你可能已經猜到,每個用戶可以擁有多個電子郵件地址,電話和是多個組的一部分。如何使用上面的所有表格顯示下面的表格?
+---------+-------------+-------------------+--------------+
|name |phones |emails |groups |
+---------+-------------+-------------------+--------------+
|John Doe |123-555-0101,|[email protected], |group1,group2,|
| |123-555-0909 |[email protected] |group3 |
+---------+-------------+---------+---------+--------------+
UPDATE:電子郵件和電話,不應該從他們的表立即採取。表contact_methods
包含引用這些表的條目。
這不回答這個問的問題。他希望每個姓名都有一行,並帶有連接的電話,電子郵件和組列表。 –
羅傑,更新了答案! –
謝謝你,除了Chris的筆記,你的查詢不使用contact_methods表。 – Chad