Rechercher : dans
Par :

{Oracle} requête avec boucle

Dernière réponse le 26 aoû 2009 à 17:40:41 amben, le 26 aoû 2009 à 11:11:59 
 Signaler ce message aux modérateurs

Bonjour,

je cherche depuis quelques jours une solution pour faire une requete.

Il s'agit dans le requête de supprimer dans une table toutes les lignes ou la date (en colonne) est antérieure à 4ans sauf si elle est la dernière de son année.

Par exemple
1 enregistrement contient la date: 12/12/86
un autre contient la date 30/12/86

Ca correspond à plus de 4 annnées passées, je supprime la ligne 1 mais je garde la ligne 2.

Bon, a mon avis il faut utiliser un curseur.

car avec cette requete ca ne marche pas :

DELETE FROM ma_table
WHERE trunc(ma_date) < add_months(TRUNC(sysdate),-48)
AND trunc(ma_date) <> ( select max(trunc(R.ma_date))
FROM ma_table R
GROUP BY TO_CHAR(R.ma_date,'yyyy')
);

Le probleme c'est que le select me sort toutes les dates maximale pour chaque année et non pas celle de l'année sur laquelle je veux faire le control avant de apsser à l'autre

Merci pour votre aide potentielle

Meilleures réponses pour « {Oracle} requête avec boucle » dans :
Oracle - Les requêtes hiérarchiques Voir Cet article se base sur des tests et recherches réalisés dans la version 8.1.5 d'Oracle. Introduction Tout au long de cet article, nous allons nous intéresser à une structure de données permettant de créer un Forum de discussion, matérialisé par...
Oracle - Cycle de vie des curseurs VoirLa bonne compréhension du cycle de vie et du fonctionnement des curseurs, permet d’optimiser les applications exécutant des requêtes SQL. Les étapes lors de l’exécution d’un curseur sont les suivantes : Ouverture d’un curseur : une structure...
Oracle - Optimisation des requêtes VoirOracle est fourni avec un optimiseur qui permet d'optimiser le plan d'exécution d'une requête. Parfois, les caractéristiques des données dans la base de données sont en évolution rapide, afin que l'optimiseur (ses statistiques) soit mis à jour....
Connexion à une base Oracle en php Voir1. Périmètre Cet article est un exemple de connexion à une base Oracle par le biais d'un script php. Cet article ne traite pas la configuration de votre serveur Oracle, et de votre client Oracle. Nous partons du principe que vous pouvez accéder à...
Java - L'API JDBC VoirIntroduction à JDBC La technologie JDBC (Java DataBase Connectivity) est un ensemble de classes permettant de développer des applications capables de se connecter à des serveurs de bases de données (SGBD). L'accès aux bases de données avec...
Oracle - Les séquences VoirCet article s'appuie sur la version 8.1.6 d'Oracle. Une séquence est un objet de base de données Oracle, au même titre qu'une table, une vue, etc... Autrement dit, il appartient à un utilisateur, on peut le manipuler, le modifier, à condition...
Le langage SQL VoirQu'appelle-t-on SQL? SQL (Structured Query Language, traduisez Langage de requêtes structuré) est un langage de définition de données (LDD, ou en anglais DDL Data Definition Language), un langage de manipulation de données (LMD, ou en anglais DML,...

1

Christounet, le 26 aoû 2009 à 11:24:48

Bonjour,

Peux-être le code suivant devrait faire ce que tu veux

DELETE FROM ma_table
WHERE trunc(ma_date) < add_months(TRUNC(sysdate),-48)
AND trunc(ma_date) <> ( select max(trunc(R.ma_date))
FROM ma_table R
WHERE TO_CHAR(ma_date,'yyyy') = TO_CHAR(R.ma_date,'yyyy'))

J'ai pas testé, à toi de voir.
A plus On se donne des souvenirs quand on se quitte.
(Marcel Achard)

Répondre à Christounet

2

 amben, le 26 aoû 2009 à 17:40:41

En fait j'ai réussi a la faire avec des cursor loop :)

Merci beaucoup pour ta réponse quand meme !

Répondre à amben