jeudi 31 mai 2007
Simuler un LIMIT sous Oracle avec ROWNUM
Je suis une adepte de MySQL alors quand je passe sous Oracle, je me demande comment récupérer des résultats compris entre x et y? Petit clin d'oeil au LIMIT de MySQL.
A quoi ça sert? Cela peut servir par exemple pour paginer des résultats.
SELECT * from
(select champRecherche, ROWNUM AS R from tableRecherche where vosCriteresDeRecherche)
WHERE R BETWEEN x and y;
Concrètement, votre requête normale correspond à la requête en italique, auquelle vous ajoutez le champ ROWNUM AS R. Ce champ a pour but de numéroter vos résultats. Vous avez ensuite une requête externe qui récupère les résultats entre x et y.
Exemple : je recherche des élèves qui ont 18 de moyenne et je récupère les noms entre le 10eme et le 15eme élève.
select * from
( select nom, ROWNUM as R from ClassePremiereS where moyenne = 18 )
where R between 10 and 16;
mardi 29 mai 2007
DELETE sur des tables multiples en SQL sous Oracle
Comment faire pour supprimer des enregistrements figurant dans des tables distinctes? Avec DELETE, nous ne pouvons normalement pas le faire. Mais nous pouvons contourner ce problème en faisant appel aux sous-requêtes.
Exemple sous Oracle :
delete from table1 where ID in (
select table1.ID from
table1, table2
where table1.cle1 = table2.cle2
and (condition à rajouter)
);







