requête imbriquées sous MySQL

Petit nouveau ! | 2 Messages

01 août 2005, 19:53

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.

Mammouth du PHP | 19672 Messages

01 août 2005, 20:38

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 ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Petit nouveau ! | 2 Messages

01 août 2005, 23:13

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

Mammouth du PHP | 19672 Messages

02 août 2005, 09:36

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.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe: