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

SQL Oracle Discussion :

Problème SQL


Sujet :

SQL Oracle

  1. #1
    Membre actif
    Inscrit en
    Septembre 2007
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 63
    Par défaut Problème SQL
    Bonjour à tous,

    voici mon problème :
    j'ai une table avec
    type;f_id;c_id
    C;1000233;54874
    C;1000233;54875
    C;1000233;54876
    C;1000233;54877

    je dois faire une requete permettant d'extraire ces données en ajoutant un champs à la fin avec pour le premier type C -- un type C et pour les autres A
    Selon le plus petit c_id

    en gros je dois obtenir
    C;1000233;54874;C
    C;1000233;54875;A
    C;1000233;54876;A
    C;1000233;54877;A


    C pour le c_id le plus petit pour le même f_id

    Merci de m'aider je suis bloqué !!!

  2. #2
    Scorpi0
    Invité(e)
    Par défaut
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    select type, 
           f_id ,
           c_id, 
           case when c_id = 
           (
                select min(c_id) 
                from myTable t2 
                where t2.f_id = t1.f_id
            ) then 'C' 
            else 'A' 
            end
    from myTable t1
    devrait convenir.

    [Edit] : Je confirme
    Dernière modification par Scorpi0 ; 25/11/2008 à 15h31.

  3. #3
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 953
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 953
    Par défaut
    Ou en utilisant row_number :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    select type,f_id,c_id,
           case when rn=1 then 'C' else 'A' end as nouveau_type
    from (
    select type,f_id,c_id,
           row_number() over (partition by f_id order by c_id) rn
    from tatable
    where type='C'
    )
    [EDIT] Ok c'est Salim qui a la requête la plus simple

  4. #4
    Rédacteur

    Homme Profil pro
    Développeur et DBA Oracle
    Inscrit en
    Octobre 2006
    Messages
    878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur et DBA Oracle

    Informations forums :
    Inscription : Octobre 2006
    Messages : 878
    Par défaut
    Salut,
    On peut faire plus simple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    SQL>  WITH mytable AS
      2       (SELECT 'C' TYPE, 1000233 f_id, 54874 c_id
      3          FROM DUAL
      4        UNION ALL
      5        SELECT 'C', 1000233, 54875 c_id
      6          FROM DUAL
      7        UNION ALL
      8        SELECT 'C', 1000233, 54876 c_id
      9          FROM DUAL
     10        UNION ALL
     11        SELECT 'C', 1000233, 54877 c_id
     12          FROM DUAL
     13        UNION ALL
     14        SELECT 'C', 1000234, 54875 c_id
     15          FROM DUAL)
     16  SELECT TYPE, f_id, c_id,
     17         CASE
     18            WHEN c_id = MIN (c_id) OVER (PARTITION BY f_id)
     19               THEN 'C'
     20            ELSE 'A'
     21         END res
     22    FROM mytable;
     
    T       F_ID       C_ID R
    - ---------- ---------- -
    C    1000233      54874 C
    C    1000233      54875 A
    C    1000233      54876 A
    C    1000233      54877 A
    C    1000234      54875 C
     
    SQL>

  5. #5
    Membre actif
    Inscrit en
    Septembre 2007
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 63
    Par défaut
    merci à tous

  6. #6
    Rédacteur

    Homme Profil pro
    Développeur et DBA Oracle
    Inscrit en
    Octobre 2006
    Messages
    878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur et DBA Oracle

    Informations forums :
    Inscription : Octobre 2006
    Messages : 878
    Par défaut
    Il faut mettre le post à

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

Discussions similaires

  1. problème SQL avec le tutoriel recherche multi critère
    Par qbihlmaier dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 05/12/2005, 19h33
  2. SQL : résoudre ce type de problème sql.
    Par LESOLEIL dans le forum Langage SQL
    Réponses: 4
    Dernier message: 07/10/2005, 13h48
  3. Problème SQL vb5
    Par mpat dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 03/08/2005, 16h49
  4. Problème SQL
    Par Florent0001 dans le forum Langage SQL
    Réponses: 8
    Dernier message: 10/11/2004, 17h07
  5. Problèmes SQL
    Par stampe dans le forum Bases de données
    Réponses: 2
    Dernier message: 06/07/2004, 21h02

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