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 :

Remplacer plusieurs UNION par DECODE


Sujet :

SQL Oracle

  1. #1
    Membre à l'essai
    Femme Profil pro
    ingenieure informatique reseau et telecom
    Inscrit en
    Juin 2014
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : ingenieure informatique reseau et telecom
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2014
    Messages : 132
    Points : 18
    Points
    18
    Par défaut Remplacer plusieurs UNION par DECODE
    Bonjour,
    J'ai une question SVP.
    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select t ,d from t1,t2 where t1.id1=t2.id1  and u like '%10' 'or un'
    union select t,d from t1,t2 wheret1.id1=t2.id1 and u like '%11'  'or b'
    Je veux faire le même select utilisant decode pour ' or u' et 'or b'.
    Merci.

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 768
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 768
    Points : 52 565
    Points
    52 565
    Billets dans le blog
    5
    Par défaut
    DECODE n'existe pas en SQL. C'est spécifique à Oracle.
    En SQL il faut utiliser CASE. À me lire : http://sqlpro.developpez.com/cours/sqlaz/select/#L7

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Membre à l'essai
    Femme Profil pro
    ingenieure informatique reseau et telecom
    Inscrit en
    Juin 2014
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : ingenieure informatique reseau et telecom
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2014
    Messages : 132
    Points : 18
    Points
    18
    Par défaut re
    pour like je peut utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     and (u like '%10'
    or u like '%11'
    mais je sais pas quoi faire pour' or u' et 'or un'
    merci

  4. #4
    Membre à l'essai
    Femme Profil pro
    ingenieure informatique reseau et telecom
    Inscrit en
    Juin 2014
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : ingenieure informatique reseau et telecom
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2014
    Messages : 132
    Points : 18
    Points
    18
    Par défaut re
    moi je veux le faire avec pl sql

  5. #5
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 803
    Points
    30 803
    Par défaut
    PL/SQL est le langage procédural associé à Oracle donc sans rapport avec PostgreSQL
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  6. #6
    Membre à l'essai
    Femme Profil pro
    ingenieure informatique reseau et telecom
    Inscrit en
    Juin 2014
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : ingenieure informatique reseau et telecom
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2014
    Messages : 132
    Points : 18
    Points
    18
    Par défaut utliser l'opérateur like dans decode
    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
    select a,b,c from ab a, ac c,ad d ,
    'or unc'
    where a.id1=b.id2
    and   a.id1=c.id1
    and  a like '%10' 
    union 
    select a,b,c from ab a, ac c,ad d ,'or b'
    where a.id1=b.id2
    and   a.id1=c.id1
    and  a like '%11' 
    union
    select a,b,c from ab a, ac c,ad d ,'or c'
    where a.id1=b.id2
    and   a.id1=c.id1
    and  a like '%15'
    Je veux refaire ce code pour éliminer les UNION.
    Voilà ce que je fais, je veux savoir si c'est correct ou non.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    select a,b,c from ab a, ac c,ad d ,decode(a,like'%10','or unc',like '%11','or b',like'¨%15','or c')
    where a.id1=b.id2
    and   a.id1=c.id1
     and (a like '%10'
    or alike '%11'
    or a like '%15')
    merci

  7. #7
    Membre à l'essai
    Femme Profil pro
    ingenieure informatique reseau et telecom
    Inscrit en
    Juin 2014
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : ingenieure informatique reseau et telecom
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2014
    Messages : 132
    Points : 18
    Points
    18
    Par défaut re
    C'est juste parce que je n'ai pas trouvé le pl/sql.

  8. #8
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 803
    Points
    30 803
    Par défaut
    Est-ce que l'une quelconque des requêtes composant la requête UNION a déjà donné des résultats ?
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  9. #9
    Membre à l'essai
    Femme Profil pro
    ingenieure informatique reseau et telecom
    Inscrit en
    Juin 2014
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : ingenieure informatique reseau et telecom
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2014
    Messages : 132
    Points : 18
    Points
    18
    Par défaut re
    j'ai pas testé encore parce que je veux deja savoir si on peut faire un like dans decode ou pas merci bcp pour votre reponse

  10. #10
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour,

    Si al1_24 pose cette question, c'est parce que tout le monde se demande ce que sont ces 'or un' dans vos requête.
    C'est aussi ce qui explique que vous n'ayez pas eu de réponse pertinente jusqu’à présent : on ne peut pas comprendre où vous voulez allez, puisque nous ne comprenons déjà pas d'où vous venez ! en l'état, aucune de vos requêtes n'est correcte, ni même n'a de sens.

    Expliquez donc clairement ce que vous voulez faire. Pour cela, une requête peut aider à comprendre, encore faut-il qu'elle ait du sens, ce qui n'est pas le cas de votre requête UNION.
    Expliquez notamment ce que sont ces 'or unc', 'or b' et 'or c' qui ne sont manifestement pas des tables mais apparaissent pourtant dans vos clauses FROM

  11. #11
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Citation Envoyé par SQLpro Voir le message
    DECODE n'existe pas en SQL. C'est spécifique à Oracle.
    En SQL il faut utiliser CASE. À me lire : http://sqlpro.developpez.com/cours/sqlaz/select/#L7
    Comme SQLPro l'a déjà indiqué, avec case vous pouvez.
    Je rajoute qu'avec decode vous ne pouvez pas.

    Au passage, êtes-vous sûre d'être sur une base PostgreSQL ?

  12. #12
    Membre à l'essai
    Femme Profil pro
    ingenieure informatique reseau et telecom
    Inscrit en
    Juin 2014
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : ingenieure informatique reseau et telecom
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2014
    Messages : 132
    Points : 18
    Points
    18
    Par défaut re
    pour tous l'union il existe une seul differente
    c'est dans le like %10 %11 pour l' or unc '
    c pour dire si like '%10' tu peut la mentionée comme 'or unc'
    si like '%11' tu peut la mentionée comme 'or b'
    j'ai travail sur une base donne oracle(sqldeveloper) dont les donnée sont confidentiel si pour ça j'ai essayée de donneé un exemple pour savoir la syntaxe (or unc , or b des noms qui ne sont pas dans la base de donne )
    moi ce que je veux faire c'est d'appeler des fonctions pl sql dans un data template pour faire le reporting

  13. #13
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 803
    Points
    30 803
    Par défaut
    Si la base de donnée est sous Oracle, pourquoi avoir posté dans PostgreSQL ?
    Pour des raisons de confidentialité aussi ?
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  14. #14
    Membre à l'essai
    Femme Profil pro
    ingenieure informatique reseau et telecom
    Inscrit en
    Juin 2014
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : ingenieure informatique reseau et telecom
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2014
    Messages : 132
    Points : 18
    Points
    18
    Par défaut re
    je pense que je trouver la solution
    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
    34
    35
    36
    37
    38
    39
    40
     
    select  distinct  m.segment1||'.'|| m.segment2 ||'.'|| m.segment3 ,
    			'OR PROOF' as FRAPPE,
    			m.description as desc,
    			m.SEGMENT2 A,
    			get_non_val_enc(:p_id, :p_date_ref,m.segment1 , m..segment3)TRANS
    ( case segment3 
    		WHEN like'%10' THEN 'OR PR'
         		WHEN like'%11' THEN 'OR UN'
    		WHEN like'%20' THEN 'AT pro'
     
         		WHEN like'%21' THEN 'ARGENT UNC'
         		WHEN like'%40'  THEN 'D Coe'
    		When like'%30' THEN 'B PRO'
    		ELSE '---'
    		end) as frappe
     
    		from 	mtl_system_items_b m,
     			mtl_item_categories_v micv,
    			mtl_parameters mp,MTL mmt
     
     
    		where mtl_system_items_b.organization_id = :p_id
    			and m.inventory_item_id =  mtl_item_categories_v .inventory_item_id 
       			and m.organization_id =  mtl_item_categories_v .organization_id
     
    			and micv.segment1 in ('MFID-MPC')
    			and micv.CATEGORY_SET_NAME like 'A%'
    			and m.costing_enabled_flag = 'N'
    			and m.segment3 not like '%MED%'
     
    			and (	m.segment3 like '%10'
        			or 	m.segment3 like '%11'
        			or  	m.segment3 like '%20'
    			or 	m.segment3 like '%21'
    			or	mt.segment3 like '%40'
    			or 	m.segment3 like '%30'
    			or 	(m.segment3 not like '%30') and (.segment3 not like '%20') 
    			and (m.segment3 not like '%10') and (m.segment3 not like '%11')
    			and (m.segment3 not like '%21') and (m.segment3 not like '%40'));

  15. #15
    Membre à l'essai
    Femme Profil pro
    ingenieure informatique reseau et telecom
    Inscrit en
    Juin 2014
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : ingenieure informatique reseau et telecom
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2014
    Messages : 132
    Points : 18
    Points
    18
    Par défaut re
    je pense que vous ete la pour aidé les gens ,au lieu de m'aidé a trouvé une solution tu es entrain de dire pour quoi tu fais ça et pour quoi ça vraiment j'aime pas ta façon de parler j'ai deja dit que j'ai pas trouver le forum de pl sql

Discussions similaires

  1. [String] remplacer plusieurs espaces par un seul
    Par scraly dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 01/12/2010, 15h25
  2. [AC-2003] Remplacer plusieurs textbox par un label et une seule textbox
    Par buzz73 dans le forum IHM
    Réponses: 2
    Dernier message: 21/12/2009, 12h35
  3. Remplacer plusieurs espace par un seul
    Par rjcab dans le forum VBA Access
    Réponses: 14
    Dernier message: 04/07/2008, 12h28
  4. remplacer plusieurs mots par un seul mot
    Par nivose110 dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 07/02/2007, 09h40
  5. Remplacer plusieurs colonnes par un 'alias'
    Par zestrellita dans le forum Langage SQL
    Réponses: 7
    Dernier message: 22/04/2004, 16h51

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