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 :

Migration de Base de données SQLServer -> Oracle


Sujet :

Langage SQL

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2005
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 26
    Points : 18
    Points
    18
    Par défaut Migration de Base de données SQLServer -> Oracle
    Bonjour, je dois actuellement faire une migration en ne gardant uniquement que certaines données :

    Je m'explique :
    J'ai une table qui comporte un identifiant de produit et une description.
    genre idprod : 11025412 et description : produit destiné à la vente.

    Le probleme c'est que je n'ai que ces 2 champs et que idprod peut avoir plusieurs descriptions : cela va de 1 à 4.
    Donc pour le meme produit je peux avoir jusqu'a 4 descriptions plus ou moins longues, mon but serait de ne garder qu'une seule description lors de la migration en ne prenant que celle qui comporte la chaine de caractères la plus longue dans la description.
    Je fais le tout en java mais e n'arrive pas à voir comment je peux faire pour ne conserver que la description la plus longue.

    Merci d'avance à tous.

  2. #2
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Si j'ai bien compris le problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT idProd, Description
    FROM laTable b
    WHERE LENGTH(Description) = (SELECT MAX(LENGTH(Description)) FROM laTable a WHERE a.idProd = b.idProd)
    variante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT idProd, Description
    FROM laTable b
    WHERE NOT EXISTS (SELECT NULL FROM laTable a WHERE a.idProd = b.idProd AND LENGTH(a.Description) > LENGTH(b.Description))
    Attention, s'il a plusieurs descriptions de même longueur, tu vas avoir plusieurs réponses.
    Mais dans ce cas, il faut une règle pour définir l'enregistrement qui est pris en compte.

    Solution "aléatoire"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT idProd, MAX(Description)
    FROM laTable b
    WHERE LENGTH(Description) = (SELECT MAX(LENGTH(Description)) FROM laTable a WHERE a.idProd = b.idProd)
    GROUP BY idProd
    J'affirme péremptoirement que toute affirmation péremptoire est fausse
    5ième élément : barde-prince des figures de style, duc de la synecdoque
    Je ne réponds jamais aux questions techniques par MP

  3. #3
    Membre à l'essai
    Inscrit en
    Avril 2005
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 26
    Points : 18
    Points
    18
    Par défaut
    Tour d'abord, merci de ta réponse.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT idProd, Description
    FROM laTable b
    WHERE LENGTH(Description) = (SELECT MAX(LENGTH(Description)) FROM laTable a WHERE a.idProd = b.idProd)
    Alors en fait dans ma table j'ai ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    10256325 | Appareil électroménager
    10256325 | Appareil électroménager Miele
    10256325 | Appareil électroménager Miele avec ramasseur automatique
    10245632 | Bureau en bois de cagette
    10245632 | Bureau simple
    Et moi dans ma table sous Oracle je voudrais avoir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    10256325 | Appareil électroménager Miele avec ramasseur automatique
    10245632 | Bureau en bois de cagette
    En fait au départ je n'ai qu'une seule et unique table.
    Donc je ne comprends pas bien le "table a" et "table b"

    Merci d'avance.

  4. #4
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Il n'y a qu'une seule table (laTable, qu'il faut que tu remplaces par le nom de ta table), a et b sont des alias.

    LENGTH est la fonction qui ramène la longueur au moins sous ORACLE, je ne sais pas si c'est la même fonction avec SQL-Server.

    Peut-être seras-tu obligé d'écrire FROM laTable AS a
    J'affirme péremptoirement que toute affirmation péremptoire est fausse
    5ième élément : barde-prince des figures de style, duc de la synecdoque
    Je ne réponds jamais aux questions techniques par MP

  5. #5
    Membre à l'essai
    Inscrit en
    Avril 2005
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 26
    Points : 18
    Points
    18
    Par défaut
    Ah ok, je vais essayer comme ca alors. Merci d'avance.
    Je te tiendrais au courant si ca fonctionne.

  6. #6
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    J'attends aussi que tu poses un "Appareil électroménager Miele avec ramasseur automatique " sur un "Bureau en bois de cagette ", juste pour voir
    J'affirme péremptoirement que toute affirmation péremptoire est fausse
    5ième élément : barde-prince des figures de style, duc de la synecdoque
    Je ne réponds jamais aux questions techniques par MP

  7. #7
    Membre à l'essai
    Inscrit en
    Avril 2005
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 26
    Points : 18
    Points
    18
    Par défaut
    lol

    Bon verdict, SQLserver ne m'accepte pas la fonction length

  8. #8
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Essaye LEN(Description)
    J'affirme péremptoirement que toute affirmation péremptoire est fausse
    5ième élément : barde-prince des figures de style, duc de la synecdoque
    Je ne réponds jamais aux questions techniques par MP

  9. #9
    Membre à l'essai
    Inscrit en
    Avril 2005
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 26
    Points : 18
    Points
    18
    Par défaut
    Nickel.

Discussions similaires

  1. Réponses: 1
    Dernier message: 19/03/2008, 17h52
  2. Connexion à une base de données SQLSERVER
    Par jphilve dans le forum Bases de données
    Réponses: 2
    Dernier message: 03/06/2006, 22h38
  3. Migration de bases de données de My SQL vers SQL Server 2005
    Par thvphan dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 29/04/2006, 13h34
  4. [ASA]Migrer une base de données Sybase vers Oracle
    Par madina dans le forum Sybase
    Réponses: 2
    Dernier message: 12/04/2006, 12h40
  5. migration d'une base de données access vers oracle
    Par narjisovish dans le forum Migration
    Réponses: 2
    Dernier message: 08/09/2005, 10h27

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