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 :

Select Distinct avec image (Version 10G)


Sujet :

SQL Oracle

  1. #1
    Membre éprouvé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2006
    Messages
    730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 730
    Points : 923
    Points
    923
    Par défaut Select Distinct avec image (Version 10G)
    Bonjour à tous,

    J'ai une requête du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT a.champ1,b.champ2 
    from table1 a
    join table2 b on a.champ1=b.champ1
    group by a.champ1,b.champ2
    champ1 est un int, champ2 est un blob (pas un LongRows)

    Oracle ne veut pas des DISTINCT sur les blob (ce qui est compréhensible)

    j'ai donc écris

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select * from (SELECT a.champ1 
    from table1 a group by a.champ1) frs
    join (select b.champ1,b.champ2 from table2 b) frt on frs.champ1=frt.champ1
    j'ai donc mon distinct sur la table a et ma jointure sur b fonctionne, donc le résultat est bon

    seulement je retourne 2 fois le champ1
    donc je fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select ch1,ch3 from (select a.champ1 as ch1,b.champ1 as ch2,b.champ2 as ch3   from (SELECT a.champ1 
    from table1 a group by a.champ1) frs
    join (select b.champ1,b.champ2 from table2 b) frt on frs.champ1=frt.champ1)
    la tout est OK mais c'est pas beau.

    quelqu'un connaitrait-il une astuce pour rendre la requête plus "propre"

    merci
    Errare humanum est, perseverare diabolicum (Sénèque)

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    354
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 354
    Points : 436
    Points
    436
    Par défaut
    Une autre possibilité serait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    select b.champ1, b.champ2
    from table2 b
    where b.champ1 in
    (
      select champ1
      from table1 a
    )
    Je ne vois pas exactement l'intérêt de GROUP BY dans votre cas! Sauf garantir l'unicité du résultat mais justement, dans table2, le couple champ1 et champ2 est il unique?
    Consultant et formateur Oracle

  3. #3
    Membre éprouvé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2006
    Messages
    730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 730
    Points : 923
    Points
    923
    Par défaut
    merci,

    en fait
    dans table1 =>champ1 est l'id article, champ2 est un libellé (uniques)
    dans table2 =>champ1 est l'id article, champ2 est un code barre, (non unique :dépend du fournisseur, la clé est id_article,code barre, id fournisseur,pays)

    donc , vous avez raison,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT b.champ1, b.champ2
    FROM table2 b
    WHERE b.champ1 IN
    (
      SELECT champ1
      FROM table1 a
    )
    GROUP BY b.champ1, b.champ2
    irait très bien.

    Errare humanum est, perseverare diabolicum (Sénèque)

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

Discussions similaires

  1. Select distinct avec une requête
    Par theted dans le forum Débuter
    Réponses: 4
    Dernier message: 28/05/2010, 14h48
  2. select distinct avec pmo
    Par neril dans le forum PhpMyObject
    Réponses: 1
    Dernier message: 13/03/2009, 11h39
  3. Pbm selection distinct avec jonction de table
    Par BernardT dans le forum Langage SQL
    Réponses: 1
    Dernier message: 18/07/2007, 11h05
  4. SELECT DISTINCT avec 2 champ
    Par cortex024 dans le forum Langage SQL
    Réponses: 12
    Dernier message: 14/06/2007, 11h16
  5. SELECT DISTINCT avec tri sur un autre champ que celui du distinct
    Par Stephane_br dans le forum Langage SQL
    Réponses: 5
    Dernier message: 09/11/2006, 11h37

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