Résolu requête SQL conditionnelle et comparaison de 2 enregistrements sur 2 tables

maestro1303

Nouveau membre
Bonjour à tous, meilleurs vœux pour le nouvel an!

J'ai 2 tables t1 et T2 ayant pratiquement la même structure
elles ont une clé auto-incrément
Je parcours t1 et écris éventuellement dans t2

t1(clé, indice, x1,x2,x3,...)

t2(clé, indice, x1,x2,x3,...)

Si je trouve que T1.indice=T2.indice alors

si min(t1.x1,t1.x2,t1.x3)< min(t2.x1,t2.x2,t2.x3) alors l'enregistrement est supprimé dans t2 et remplacé par son vis à vis de t1;et on passe au suivant. Sinon il n'y a pas d'écriture dans t2 et l'enregistrement est supprimé dans T1; et on passe au suivant.

Or je ne connais que les commandes SQL simples! sans structure de contrôle(pas de case, while, for, if ...) .

Est ce que quelqu'un peut m'aider à effectuer cette tâche sous Mysql 5.1.52-community-log de façon plus rapide et plus efficace.

Merci infiniment.
 

zeb

Modérateur
Salut et bonne année.

Ohlala, min est une fonction d'agrégation SQL. Attention donc.
Je regarde un peu ça et reviens vite à toi.
 

zeb

Modérateur
Meilleure réponse
Bon, l'histoire de supprimer une ligne pour la recréer suppose deux actions : un DELETE puis un INSERT.
Pour faire une requête avec ça, bonjour !

Je propose plutôt un UPDATE.
Et pour la suppression, ben c'est bien un DELETE.

Ça donnerait donc quelque chose comme ça :

SQL:
DELETE T1 
  FROM T1 JOIN T2 USING(indice)
 WHERE LEAST(T1.x1, T1.x2, T1.x3) >= LEAST(T2.x1, T2.x2, T2.x3);

UPDATE T1 JOIN T2 USING(indice)
   SET T1.x1 = T2.x1,
       T1.x2 = T2.x2,
       T1.x3 = T2.x3,
       ....
 WHERE LEAST(T1.x1, T1.x2, T1.x3) < LEAST(T2.x1, T2.x2, T2.x3);

Qu'en dit-tu ?
 

maestro1303

Nouveau membre
Bonjour Zeb,
Pour répondre à ta question, ta réponse est parfaite. Elle marche pour l'essentiel: et pour le peu qui reste c'est ma faute car je n'ai pas bien exprimé ma requête.

Mille merci.
 

zeb

Modérateur
Remerciement accepté :)

Mais pas la peine de battre ta coulpe, hein ! Les exigences de ce forum, c'est d'être poli (bonjour, merci, écriture correcte...) et de ne pas prendre les autres membres du forum pour ces cons. T'avais donc tout bon, c'est pourquoi t'as eu une solution qui je l'espère répond à ton problème. ;)
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 134
Messages
6 718 052
Membres
1 586 393
Dernier membre
mathhh28
Partager cette page
Haut