Page 1 sur 1

requête imbriquées sous MySQL

Posté : 01 août 2005, 19:53
par A2rem
bonjour,

pour pallier le manque de requêtes de imbriquées sous MYSQL ( version anciennes) j'ai voulu écrire cette requête qui fonctionne sous ACCESS mais pas sous MySQL.

Code : Tout sélectionner

Update table1,table2 set champs1=CONCAT(champs1_1, champs2_1) where champs1_2=1
précision:
champs1_1 et champs1_2 soont des champs de la table1
et champs2_1 est un champs de table2
le but est de récupérer la liste des noms contenus dans la table2
pour les écrires dans un la table1 sous forme de texte !


qui peut m'aider en ce mois d'aoüt où tout le monde st en vacances ??!!

merci.

Posté : 01 août 2005, 20:38
par Cyrano
Je suis pas très sur de comprendre: tu veux mettre à jour dans la première table à partir de la seconde ou ajouter des données dans la première à partir de données récupérées dans la seconde ?

Posté : 01 août 2005, 23:13
par A2rem
oui il s'agit bien d'une mise à jour.

exemple:
la table2 contient ceci:

toto
tata
titi
roro

la table1 contient ceci

1 Test


après la requête je souhaite obtenir à la place du mot Test la chaine suivante:
toto tata titi roro


voilà.

Posté : 02 août 2005, 09:36
par Cyrano
Je ne sias pas si c'est possible, mais en théorie, ça devrait davantage ressembler à :

Code : Tout sélectionner

UPDATE table_1 SET champ = CONCAT(SELECT champ_1, champ_2 FROM table2 WHERE id = 'identifiant');
Le problème, c'est que je ne suis pas certain que MySQL accepte cette imbrication, et de toute façon ce sera rejeté avec une version inférieure à 4.1
La solution probable: deux requête et un traitement de concaténation par programmation entre les deux, la première requête pour récupérer dans la seconde table les champs à concaténer, la secondepour mettre à jour la première table.

Ceci dit, ce que tu veux faire, ça revient à mettre un "champ calculé" dans ta base de données, ce qu'on évite en général de faire dans une base optimisée.