{MySQL} Requête DELETE suite à requête SELECT

magicbret Messages postés 34 Statut Membre -  
HostOfSeraphim Messages postés 7340 Statut Contributeur -
Bonjour,

Je suis en train de créer un script shell visant à supprimer les doublons d'une table. Ce script sera ensuite automatisé par une tâche cron, toute les nuits.

Mon problème est que je dois supprimer plusieurs lignes résultant d'une requete SELECT mais je ne vois pas quelle requête écrire. Toute aide est donc la bienvenue.

Voici le code :

#!/bin/bash
# On récupère la date du jour
now=`date +"%Y-%m-%d"`
echo "ICI_LA_REQUETE_A_INSERER" | mysql database -u username -ppassword


Et la requête SELECT est la suivante :

SELECT RadAcctId,UserName,AcctStartTime,AcctStopTime,AcctSessionTime,NASIPAddress, COUNT(*) FROM radacct GROUP BY UserName, AcctStopTime HAVING COUNT(*) > 1 AND LEFT(AcctStartTime,10) = '$now'

Cette requête me renvoie x résultats, que je dois supprimer par une requête DELETE, le tout de façon automatique.

Merci pour votre aide.
A voir également:

3 réponses

rescue Messages postés 1047 Statut Contributeur 136
 
Bonjour,

Une requête sql delete porte sur miminum 2 choses la table et un champ de cette table.

Par exemple : DELETE FROM table WHERE champ = 'valeur'

Les valeurs doivent être identique de préférence.
Attention si pas de clause WHERE toutes les données de la table seront supprimées.

@+
0
magicbret Messages postés 34 Statut Membre 7
 
Merci. Je m'aperçois que ma demande est un peu floue.

Pour la syntaxe de DELETE, c'est ok. En gros, je pense que je devrais m'orienter vers quelque chose comme :

DELETE FROM radacct WHERE EXISTS ( SELECT.........)

ou

DELETE FROM radacct IN ( SELECT.........)

La requête doit supprimer toute les lignes contenues dans la requête SELECT, qui doit être imbriquée je pense.
0
rescue Messages postés 1047 Statut Contributeur 136
 
Re,

Oui nous nous sommes compris.
Mais n'empêche que pour la syntaxe avec IN ou EXIST (SELECT ....) faudra bien pointer sur une valeur.

Quelle est la valeur que vous souhaitez supprimer ?

Voyez cette exemple :

DELETE FROM fournisseurs WHERE EXISTS ( select clients.nom from clients where clients.client_id = fournisseurs.fournisseur_id and clients.client_nom= 'MICROSOFT' );

Cette exemple plus complexe va supprimer des enregistrements dans une table basée sur des valeurs dans une autre table.

Bon courage
0
ChrisCMoi
 
Bonjour
personnellement je débute dans le PHP, avec ce DELETE, puis je avoir une suppression automatique de champs après une date échéante?
2e, est il possible qu'un champ s'affiche de telle date à telle date?
0
HostOfSeraphim Messages postés 7340 Statut Contributeur 1 608
 
Le DELETE ne te permettra pas de supprimer des données à une date ou heure précise. Tu dois trouver un moyen extérieur qui, à date ou heure précise, exécutera la requête désirée.

Par ailleurs, à l'avenir, merci de créer un nouveau sujet si le problème est différent de celui du sujet initial :)
0