Rechercher : dans
Par :

Problème de requete sql avec DELETE et select

Dernière réponse le 28 avr 2009 à 18:10:39 flach, le 21 avr 2009 à 15:01:20 
 Signaler ce message aux modérateurs

Bonjour,

je voudrai savoir comment résoudre se problème :

j'ai une requête qui est la suivante :

SELECT id_requete,
( SELECT ip FROM machine WHERE id_machine = id_machine_src ) AS ip_src ,
( SELECT ip FROM machine WHERE id_machine = id_machine_des ) AS ip_des
FROM requete
GROUP BY ip_src, ip_des


et je voulais supprimer toutes les lignes de la table requete qui ne sont pas pris en compte dans la requete si dessus. J'ai essayé cette structure mais sans résultat :

DELETE FROM `requete` WHERE id_requete not in (SELECT id_requete,
( SELECT ip FROM machine WHERE id_machine = id_machine_src ) AS ip_src ,
( SELECT ip FROM machine WHERE id_machine = id_machine_des ) AS ip_des
FROM requete
GROUP BY ip_src, ip_des)

Configuration: Windows XP
Firefox 3.0.8

Meilleures réponses pour « problème de requete sql avec DELETE et select » dans :
SQL - Commande SELECT VoirLe langage de manipulation de données Le SQL est à la fois un langage de manipulation de données et un langage de définition de données. Toutefois, la définition de données est l'oeuvre de l'administrateur de la base de données, c'est pourquoi la...
SQL - Sous-requêtes VoirExpression des sous-requêtes Effectuer une sous-requête consiste à effectuer une requête à l'intérieur d'une autre, ou en d'autres termes d'utiliser une requête afin d'en réaliser une autre (on entend parfois le terme de requêtes en...

1

flach, le 28 avr 2009 à 09:09:35

Je vous relance mes je suis assez pressé et je n'ai toujours pas trouvé la réponse.

Répondre à flach

2

loocla, le 28 avr 2009 à 09:33:24

Ca te met une erreur ?
Tu places ta requête dans un requeteur directement ?   ("\(o_O)/")("\(o_O)/")("\(o_O)/")("\(o_O)/")("\(o_O)/")
("\(o_O)/")Toutes les routes mènent au RHUM ("\(o_O)/")

Répondre à loocla

3

flach, le 28 avr 2009 à 17:33:16
  • +1

Merci j'ai trouvé la solution problème résolue.

j'ai placé le résultat de m'a première requete dans une table temporère ensuite j'ai comparé les identifier de mes deux tables si l'identifient était différent lors je supprimé la ligne dans la table requete.

première étape :

insert into temp_requete (id_requete, ip_src, ip_des)
SELECT id_requete,
( SELECT ip FROM machine WHERE id_machine = id_machine_src ) AS ip_src ,
( SELECT ip FROM machine WHERE id_machine = id_machine_des ) AS ip_des
FROM requete
GROUP BY ip_src, ip_des


seconde étape :

DELETE FROM requete WHERE id_requete not in (SELECT id_requete from temp_requete)

Répondre à flach

4

 P@t@ch0n, le 28 avr 2009 à 18:10:39

Sinon, les jointures, ça ne te parle pas ?

Cela serait beaucoup plus optimisé ;)

Pour ta table temp, tu peux directement insérer les valeurs dans le SQL de la création de ta table.

Répondre à P@t@ch0n