2 votes

comment mettre à jour les lignes d'un tableau qui contiennent des valeurs séparées par des virgules ?

J'ai 2 tableaux. Le premier tableau contient les noms, l'email, les légumes_Fruits et les boissons.

CREATE TABLE Likes
(
Name varchar(20),
email varchar(20),
Vegetables_Fruits varchar(20),
Drinks varchar(20)
) 

J'enregistre le nom et l'adresse électronique des personnes qui aiment les légumes, les fruits et les boissons. Une personne peut avoir n'importe quelle valeur si une personne aime les légumes, je mets à jour la table comme suit

name email 1 0

si une personne aime les fruits, alors

name email 2 0

si une personne aime les boissons, alors

name email 0 1

Insérer une requête

INSERT INTO Likes(Name,email,Vegetables_Fruits,Drinks)
     VALUES("aaa","aaa@example.com",1,0),("bbb","bbb@example.com",2,0),("ccc","cc@example.com",0,1),("ddd","dd@example.com",2,0),("eee","ee@example.com",2,0),("fff","ff@example.com",1,0),("ggg","gg@example.com",0,1),("hhh","hh@example.com",0,1) 

J'ai une autre table qui contient une liste d'emails

CREATE TABLE emailList
(
Likes_Vegetables varchar(50),
Likes_Fruits varchar(50),
Drinks varchar(50)
)

Requête d'insertion

INSERT INTO emailList(Likes_Vegetables,Likes_Fruits,Drinks)
       VALUES("aaa@example.com,ff@example.com","bbb@example.com,dd@example.com,'ee@example.com'","hh@example.com,gg@example.com,cc@example.com")

Je veux mettre à jour la deuxième table (emailList) en fonction des valeurs de la première table (Likes). Quelle est la requête pour cela

2voto

valex Points 16074
update emailList 
set 
Likes_vegetables=(select Group_concat(email) from LIKES where Vegetables_Fruits=1),
Likes_Fruits=(select Group_concat(email) from LIKES where Vegetables_Fruits=2),
Drinks=(select Group_concat(email) from LIKES where Drinks=1)

1voto

senK Points 2366

Je pense que vous cherchiez group_concat Peut-être une requête comme celle-ci

INSERT INTO emailList(Likes_Vegetables,Likes_Fruits,Drinks)
      values ( (SELECT GROUP_CONCAT(email) FROM Likes WHERE Vegetables_Fruits=1) , (SELECT GROUP_CONCAT(email) FROM Likes WHERE Vegetables_Fruits=2) , (SELECT GROUP_CONCAT(email) FROM Likes WHERE Vegetables_Fruits=0) )

-1voto

Suresh Kamrushi Points 4371

Cela résoudra votre problème, je suppose

mise à jour de la liste d'adresses électroniques, Likes_Vegetables = concat(Likes_Vegetables, "aaa@example.com"), Likes_Fruits = concat (Likes_Fruits, "ee@example.com"), Boissons = concat (Boissons, "cc@example.com") ;

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X