J'ai besoin d'aide sérieuse. Voici la chose ... Supposons que j'ai une table 'users' avec des champs (userId, name). Maintenant, je dois saisir plusieurs éléments d'information de l'autre table concernant cet utilisateur. Certains articles sont similaires et doivent donc être regroupés.multi-table SELECT de la base de données mysql (retourner plusieurs éléments dans un seul champ)
Maintenant, j'ai aussi plusieurs autres tables:
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;
Comme vous pouvez le deviner, chaque utilisateur peut avoir plusieurs e-mails, téléphones et faire partie de plusieurs groupes. Comment afficher une table comme ci-dessous en utilisant tous les tableaux ci-dessus?
+---------+-------------+-------------------+--------------+
|name |phones |emails |groups |
+---------+-------------+-------------------+--------------+
|John Doe |123-555-0101,|[email protected], |group1,group2,|
| |123-555-0909 |[email protected] |group3 |
+---------+-------------+---------+---------+--------------+
MISE À JOUR: Les e-mails et les téléphones ne doivent pas être prises immédiatement de leurs tables. La table contact_methods
contient des entrées qui référencent ces tables.
Cela ne répond pas à la question posée. Il veut une ligne par nom, avec des listes de numéros de téléphone, d'e-mails et de groupes concaténés. –
Roger, mise à jour de la réponse! –
Merci pour cela mais, en plus de la note de Chris, votre requête n'utilise pas la table contact_methods. – Chad