Problème de requete sql avec DELETE et select
flach
-
P@t@ch0n Messages postés 603 Statut Membre -
P@t@ch0n Messages postés 603 Statut Membre -
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)
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
4 réponses
-
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) -
-
Ca te met une erreur ?
Tu places ta requête dans un requeteur directement ? -
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.