DB2 : équivalent au rowcount d'Oracle ou Limit de MySQL ? - SQL/NoSQL - Programmation
Marsh Posté le 26-08-2003 à 11:06:31
suffit d'ajouter FETCH FIRST n ROWS ONLY à ton select.
Un truc dans le genre:
Code :
|
Marsh Posté le 26-08-2003 à 11:17:09
Anapajari a écrit : suffit d'ajouter FETCH FIRST n ROWS ONLY à ton select.
|
Merci !
Marsh Posté le 07-03-2005 à 10:48:53
anapajari a écrit : suffit d'ajouter FETCH FIRST n ROWS ONLY à ton select.
|
Y a-t-il aussi un moyen de prendre les enregistrments 10 à 20 ?
Equivalent en MySQL :
Code :
|
Marsh Posté le 07-03-2005 à 11:16:40
tomlameche a écrit : Salut à tous, |
Juste au passage ta requette est fausse, elle ne retournera que les bazar = 'trucmuche' dans les 15 première lignes de ta table.
Marsh Posté le 02-04-2008 à 11:22:44
Bonjour à tous
Et y'a-t-il moyen d'utiliser ce FETCH FIRST à l'intérieur d'un INSERT ?
J'ai une requête SELECT (qui au passage ne renvoie qu'une ligne...) récupérant une heure d'appel d'un module et calculant le temps passé dans ce module :
SELECT CURRENT_DATE, CURRENT_TIME, CURRENT_TIME-MAX(HEURE) FROM MaTable WHERE DATE = CURRENT_DATE |
(Pour info, MaTable = DATE (DATE) , HEURE (TIME) et TEMPS (INTEGER))
Et je voudrais faire l'insertion de cette ligne dans cette même table, mais DB2 me met : "Le mot clé FETCH est mal placé."
Sans ce FETCH, ça me met : "Une sous-requête ne peut générer qu'une seule colonne résultat."
Ma requête d'insertion est :
INSERT INTO MaTable VALUES ( |
Marsh Posté le 02-04-2008 à 11:38:25
casimimir a écrit : tu dois surement virer le values() |
Merci pour ta réponse rapide... mais l'erreur persiste, même sans le VALUES.
Pour info, ça me met aussi : "Eléments possibles : ) UNION EXCEPT"
J'ai essayé de mettre le FETCH en dehors, mais pas mieux...
Marsh Posté le 02-04-2008 à 11:50:06
Le lapin-lapine a écrit : |
Alors après recherches...
http://bytes.com/forum/thread577146.html |
donne :
DB2 for OS/390 doesn't support fetch for subselect nor fullselect even |
et donc ça semblerait impossible... sauf que, en faisant ça (je ne comprends pas trop le pourquoi du comment), ça marche :
INSERT INTO MaTable WITH MaTable AS ( |
en gros, j'ajoute WITH MaTable AS au INSERT, et je remets ma requête en dehors... Est-ce que quelqu'un peut m'expliquer ou au moins me confirmer que ça fait bien ce que je veux ?... Merci !!
Marsh Posté le 02-04-2008 à 12:15:02
nan mais ....
Si t'avais mis un group by DATE comme tu es censé le faire quand tu utilises un agrégat tu n'aurais pas ce problème...
Code :
|
Marsh Posté le 02-04-2008 à 13:52:48
Ben non...
Code :
|
Il semblerait que l'alias soit indispensable... j'ai pu le simplifier ainsi :
Code :
|
Et même plus besoin de FETCH FIRST !!
Merci à tous pour votre aide
Marsh Posté le 02-04-2008 à 14:09:09
Pour info, autre possibilité par rapport à ce que je voulais faire :
Code :
|
Marsh Posté le 02-04-2008 à 14:14:45
Le lapin-lapine a écrit : Une sous-requête ne peut générer qu'une seule colonne résultat. |
nan mais ça c'est parce que j'ai recopié comme un couillon ta requête sans regarder hein
Elle doit s'écrire comme ça :
Code :
|
edit: raah burned de 5 minutes ... faut que j'arrête de faire 2 choses en même temps
par contre, je le redis un agrégat sans group =>
Marsh Posté le 26-08-2003 à 10:52:49
Salut à tous,
Quelqun connaitrait-il un équivalent au rowcount d'Oracle ou au limit de MySQL sous DB2 pour obtenir un nombre limité de résultat dans une requete ?
Par exemple, j'ai une table 1500 enregistrement, et je veux juste récupérer les 15 premiers :
Sous Oracle je fais
SELECT bidule
FROM machin_chose
WHERE bazar = 'trucmuche' and rowcount < 15
Y a un equivalent DB2 ?
---------------
Gérez votre collection de BD en ligne ! ---- Electro-jazzy song ---- Dazie Mae - jazzy/bluesy/cabaret et plus si affinité