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

Oracle Discussion :

Rassembler plusieurs colonnes en liste dans un select


Sujet :

Oracle

  1. #1
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    237
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2002
    Messages : 237
    Points : 185
    Points
    185
    Par défaut Rassembler plusieurs colonnes en liste dans un select
    Bonjour,

    Je souhaiterai rassembler plusieurs colonnes en une seule liste dans un select.

    Le pourquoi est que je voudrais faire un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from table1 where id in (select id1, id2, id3 from table2)
    Mais bien sûr, il me dit qu'il y a trop de valeur (3 colonnes pour une) et je souhaiterai savoir s'il existe une méthode pour rassembler les valeurs de ces 3 ensembles dans un seul ?

    En vous remerciant d'avance.

    Cordialement
    Boutss

    Version BDD -> Oracle9i

  2. #2
    Membre émérite Avatar de nuke_y
    Profil pro
    Indépendant en analyse de données
    Inscrit en
    Mai 2004
    Messages
    2 076
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant en analyse de données

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 076
    Points : 2 370
    Points
    2 370
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM table1 T1 WHERE EXISTS (SELECT 1 FROM TABLE T2 WHERE T1.id=T2.ID1 OR T1.id=T2.ID2 OR T1.ID=T3.OD3)
    Il vaut mieux monopoliser son intelligence sur des bêtises que sa bêtise sur des choses intelligentes.

  3. #3
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    237
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2002
    Messages : 237
    Points : 185
    Points
    185
    Par défaut
    Merci nuke_y,

    Mais en fait c'est cette façon, qui fonctionne, que je ne veux pas utiliser car elle rend beaucoup trop lourde la requête car pour chaque élément de la table T1 on va aller scanner la table T2.

    Alors je voudrais récupérer les données de la table T2 une fois pour toute et ensuite seulement passer le filtre.

    Merci

  4. #4
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    237
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2002
    Messages : 237
    Points : 185
    Points
    185
    Par défaut Union all
    Bon une solution pas très propre mais qui fonctionne est UNION ALL :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Select Distinct ID1 from table2 where <clause>
    Union All
    Select ID2 from table2 where <clause>
    Union All
    Select ID3 from table2 where <clause>

  5. #5
    Membre éprouvé
    Inscrit en
    Avril 2006
    Messages
    1 024
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 1 024
    Points : 1 294
    Points
    1 294
    Par défaut
    Tu devrais comparer ta requête avec celle de nuke_y (regarde les consistent_gets en mode "set autotrace on"), car contrairement à toi, je ne pense pas du tout qu'elle soit moins couteuse...

  6. #6
    Membre émérite Avatar de nuke_y
    Profil pro
    Indépendant en analyse de données
    Inscrit en
    Mai 2004
    Messages
    2 076
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant en analyse de données

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 076
    Points : 2 370
    Points
    2 370
    Par défaut
    Ouaih rémi, mais dès qu'on parle de EXISTS tu n'es plus objectif
    Il vaut mieux monopoliser son intelligence sur des bêtises que sa bêtise sur des choses intelligentes.

  7. #7
    Membre éprouvé
    Inscrit en
    Avril 2006
    Messages
    1 024
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 1 024
    Points : 1 294
    Points
    1 294
    Par défaut
    Citation Envoyé par nuke_y
    Ouaih rémi, mais dès qu'on parle de EXISTS tu n'es plus objectif
    c'est clair!


  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2005
    Messages : 62
    Points : 43
    Points
    43
    Par défaut
    perso je ferai un peu comme bouts
    SELECT * FROM table1 a,
    (SELECT ID1 id FROM table2 WHERE <clause>
    Union
    SELECT ID2 FROM table2 WHERE <clause>
    Union
    SELECT ID3 FROM table2 WHERE <clause>) b
    WHERE a.id=b.id

    mais bon faut voir la masse des donnees etc, si ca ne retourne pas trop le exists devrait mieux s'en sortir

Discussions similaires

  1. Charger une liste dans s:select (hibernate et struts 2)
    Par fedora8 dans le forum Struts 2
    Réponses: 1
    Dernier message: 02/02/2012, 15h03
  2. Réponses: 5
    Dernier message: 10/02/2011, 09h55
  3. Réponses: 8
    Dernier message: 10/04/2009, 08h51
  4. Rassembler plusieurs colonnes en une
    Par cain.patres dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 10/06/2008, 11h14
  5. ecrire deux listes dans un select
    Par rherrad dans le forum Struts 1
    Réponses: 35
    Dernier message: 26/07/2007, 15h18

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