IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

SELECT sur enregistrements differents ds la meme table pour lancer traitement en parallele


Sujet :

Langage SQL

  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 710
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 710
    Points : 936
    Points
    936
    Par défaut SELECT sur enregistrements differents ds la meme table pour lancer traitement en parallele
    Bonjour

    Sur mon DB2 J'ai besoin dans la meme table de selectionner des enregistrements differents afin de faire des operations en parallele dessus.
    Ces traitements parallele seront fait en JAVA

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Je sais selectionner les 1000 premiers, mais
    pas du 1000 au 1999 par exemple
    select * from T1 fetch first 1000 rows only
    Merci d'avance
    Philippe

  2. #2
    Membre actif Avatar de Jihnn
    Inscrit en
    Décembre 2005
    Messages
    330
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 330
    Points : 273
    Points
    273
    Par défaut
    Il est possible d'utiliser les fonctions de fenêtrage (ROW_NUMBER() ), mais dans quel ordre sélectionner les données ? Voici un exemple, peut-être à adapter, qui prend les lignes 1000 à 1999 classées par id croissant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT col1, col2, col3 
    FROM
        (
            SELECT col1, col2, col3, ROW_NUMBER OVER(ORDER BY id ASC) as rowNumber
            FROM T1
        ) a
    WHERE rowNumber BETWEEN 1000 AND 1999

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 710
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 710
    Points : 936
    Points
    936
    Par défaut
    Bonjour

    Je vais devoir le faire sur plusieurs tables, et toutes n'ont pas un champ id, puis je eviter le order by ?
    Les traitements parallele seront en JAVA JDBC avec un DELETE devant

    Merci
    Philippe

  4. #4
    Membre actif Avatar de Jihnn
    Inscrit en
    Décembre 2005
    Messages
    330
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 330
    Points : 273
    Points
    273
    Par défaut
    Les lignes dans une table n'ayant pas d'ordre quelconque, vouloir sélectionner "les lignes 1000 à 1999" n'a pas vraiment de sens. Ça revient à vouloir sélectionner 1000 lignes au hasard, en fait.

    Bref, vous devez trouver un moyen pour ordonner les données. Si vous dites vouloir sélectionner les lignes 1000 à 1999, j'imagine qu'il doit bien y avoir un certain ordre !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [SQL] Update avec un count sur une colonne de la meme table
    Par debdev dans le forum SAS Base
    Réponses: 5
    Dernier message: 28/01/2014, 16h46
  2. SELECT sur plusieurs valeurs d'une meme colonne
    Par chaying dans le forum Débuter
    Réponses: 4
    Dernier message: 14/10/2011, 13h14
  3. [AC-2007] Requete selection d'enregistrements inexistants dans une autre table
    Par Benj24 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 17/04/2010, 20h29
  4. moyenne sur 4 champ d'un meme table
    Par tkwleboss dans le forum Langage SQL
    Réponses: 2
    Dernier message: 25/11/2007, 20h21
  5. Réponses: 6
    Dernier message: 12/09/2006, 08h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo