Précédent   Forum des professionnels en informatique > Bases de données > Oracle > SQL
SQL Forum d'entraide sur le SQL pour Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/01/2011, 21h26   #1
Invité de passage
 
Inscription : février 2008
Messages : 6
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 6
Points : 2
Points : 2
Par défaut delete from avec clause sample !?!?!

Bonjour à tous,

Je m'arrache les cheveux sur un truc très simple pour moi en vba, odbc et recordset mais que je n'arrive pas à faire en sql sur Oracle 10.2 (sqlplus) à partir d'unix :

je souhaite deleter un certain nombre de lignes d'une table (en général le nombre de ligne divisé par 2 donc la moitié) mais ceci en aléatoire.

Il existe la clause SAMPLE (oracle) qui permet de faire de l'aléatoire :

Code :
SELECT * FROM MA_TABLE sample (50)
où (50) représente 50 % de la table (enfin environ !)

Voilà ce que donne mon script en create :

Code :
1
2
3
4
5
 
CREATE TABLE MA_TABLE2 AS
SELECT * FROM MA_TABLE1
sample (99)
WHERE rownum <= (SELECT count(*) FROM MA_TABLE1) / 2
Je mets (99) parce que (50) ramène quelque fois moins (ou plus) de la moitié des lignes !!!!!! Donc je limite au nombre de lignes de la table divisé par 2.

Je me sers de la clause sample en select ou create table sans aucun soucis mais en delete rien à faire, j'ai une erreur "... sample clause not allowed ...".

J'ai tenté une autre approche avec le DBMS_random.value mais pareil ca ne marche pas.

Quelque DBA et/ou expert aurait il une soluce pour ma pomme ?

D'avance merci pour vos réponses et vos lectures !

Daniel.
roto_plouf est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2011, 10h17   #2
Expert Confirmé Sénior
 
Avatar de mnitu
 
Homme Marius Nitu
Ingénieur développement logiciels
Inscription : octobre 2007
Messages : 3 311
Détails du profil
Informations personnelles :
Nom : Homme Marius Nitu
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2007
Messages : 3 311
Points : 5 808
Points : 5 808
Quelle idée bizarre d’utiliser sample pour ça !
Bref, utiliser dbms_random pour générer des valeurs aléatoires dans le domaine de définition de votre clé primaire.
mnitu est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h35.


 
 
 
 
Partenaires

Hébergement Web