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

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    décembre 2018
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : décembre 2018
    Messages : 22
    Points : 6
    Points
    6

    Par défaut Simplification de requête

    Bonjour,

    Je souhaiterais savoir s'il serait possible de simplifier cette requête ? De quelques manières que ce soit ... D'avance merci à tous !!!

    Vous verrez, la ligne avec tout les REPLACE(REPLACE(REPLACE(REPLACE(........ est relativement longue mais je n'ai pas trouvé un autre moyen de la simplifier pour l'instant.

    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    SELECT DISTINCT
    	MATABLE.ETAB_UAJ.CODE_RNE AS RNE_etablissement,
    	-- Remplacement des espaces vides par un tiret
    	REPLACE(MATABLE.ELEMENT_STRUCTURE.CODE_STRUCTURE,' ', '-') AS division_classe,
    	REPLACE(REPLACE(MATABLE.ELEVE.SEXE_ID, '2', 'ANGB2'), '1', 'ANGB2') AS Certif_Langue,
    	-- Remplacement des 1 (garçons) par M et des 2 (filles) par F
    	REPLACE(REPLACE(MATABLE.ELEVE.SEXE_ID, '1', 'M'), '2', 'F') AS civilite,
    	LTRIM(MATABLE.ELEVE.NOM_ELEVE) AS nom_famille,
    	MATABLE.ELEVE.NOM_USAGE_ELEVE AS nom_usage,
    	-- Concaténation des prénoms de l'élève dans 1 seule colonne avec séparateur espace vide ' '
    	COALESCE(MATABLE.ELEVE.PRENOM_ELEVE,'')||' '||
    	COALESCE(MATABLE.ELEVE.PRENOM2_ELEVE,'')||' '||
    	COALESCE(MATABLE.ELEVE.PRENOM3_ELEVE,'') as prenoms,
    	MATABLE.ELEVE.ID_NATIONAL AS ine,
    	REPLACE(MATABLE.ELEVE.PAYS_ID, '1', '100') AS pays_naissance,
    	-- Affichage de la date au format DD/MM/YYYY
    	TO_CHAR(MATABLE.ELEVE.DATE_NAISS_ELE, 'DD/MM/YYYY') AS date_naissance,
    	MATABLE.DEPT.CODE_DEPARTEMENT AS depCOM_naissance,
    	MATABLE.COMMUNE_INSEE.CODE_COMMUNE_INSEE AS commune_naissance,
    	MATABLE.PAYS.CODE_PAYS AS nationalite,
    	REPLACE(MATABLE.ADRESSE.PAYS_ID, '1', '100') AS pays_residence,
    	MATABLE.ADRESSE.LIGNE1_ADRESSE AS adresse_1,
    	MATABLE.ADRESSE.LIGNE2_ADRESSE AS adresse_2,
    	MATABLE.ADRESSE.LIGNE3_ADRESSE AS adresse_3,
    	MATABLE.ADRESSE.LIGNE4_ADRESSE AS adresse_4,
    	MATABLE.ADRESSE.CODE_POSTAL AS code_postal,
    	MATABLE.ADRESSE.LL_POSTAL AS localite,
    	MATABLE.ELEVE.TEL_PERSONNEL AS telephone,
    	MATABLE.ELEVE.EMAIL_ELEVE AS adresse_mail,
    	-- Remplacement des BTS et des TERMINALES 1BCGSEANG - 2BTNSEANG - 3BCPSEANG - 4BCGINTER
    	REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(MATABLE.MEF.CODE_MEF, '31131211220', 'BTS31211'), '31131209220', 'BTS31209'), '31131210220', 'BTS31210'), '3113121022A', 'BTS31210'), '31120008220', 'BTS20008'), '31133419220', 'BTS33419'), '31133414220', 'BTS334145'), '31133415220', 'BTS334145'), '31133420220', 'BTS33420'), '20211010112', 'BCGSEANG'), '20211011112', 'BCGSEANG'),'20212005112', 'BCGSEANG'), '20212005111', 'BCGSEANG'), '20213019112', 'BCGSEANG'), '21220006112', 'BTNSEANG'), '21220006117', 'BTNSEANG'), '2122000611M', 'BTNSEANG'),'21231017117', 'BTNSEANG'), '21231017112', 'BTNSEANG'), '2123101711M', 'BTNSEANG'),'21231018117', 'BTNSEANG'), '21231018112', 'BTNSEANG'), '2123101811M', 'BTNSEANG'),'2123100A11A', 'BTNSEANG'), '21231019112', 'BTNSEANG'), '21231019117', 'BTNSEANG'), '2123101911M', 'BTNSEANG'),'21233402112', 'BTNSEANG'), '24723004332', 'BTNSEANG'), '2472300A11A', 'BTNSEANG'),'24723005332', 'BCPSEANG'),'24723103332', 'BCPSEANG'), '24723103337', 'BCPSEANG'), '24723405332', 'BCPSEANG'), '24733403332', 'BCPSEANG'), '20211010111', 'BCGINTER'), '20213019111', 'BCGINTER') AS formation_suivie,
    	MATABLE.ELEVE.TEL_PORTABLE AS telephone_mobile
     
    FROM MATABLE.ELEVE
    INNER JOIN MATABLE.MEF ON (MATABLE.MEF.MEF_ID = MATABLE.ELEVE.MEF_ID)
    INNER JOIN MATABLE.OPTION_ELEVE ON (MATABLE.OPTION_ELEVE.ELEVE_ID = MATABLE.ELEVE.ELEVE_ID)
    INNER JOIN MATABLE.MATIERE_ENSEIGNEE ON (MATABLE.MATIERE_ENSEIGNEE.MATIERE_ENSEIGNEE_ID = MATABLE.OPTION_ELEVE.MATIERE_ENSEIGNEE_ID)
    INNER JOIN MATABLE.ETAB_UAJ ON (MATABLE.ELEVE.ETAB_UAJ_ID = MATABLE.ETAB_UAJ.ETAB_UAJ_ID)
    INNER JOIN MATABLE.COMMUNE_INSEE ON (MATABLE.ELEVE.COMMUNE_INSEE_ID = MATABLE.COMMUNE_INSEE.COMMUNE_INSEE_ID)
    INNER JOIN MATABLE.DEPT ON (MATABLE.DEPT.DEPT_INSEE_ID = MATABLE.COMMUNE_INSEE.DEPT_INSEE_ID)
    INNER JOIN MATABLE.PAYS ON (MATABLE.PAYS.PAYS_ID = MATABLE.ELEVE.PAYS_ID)
    INNER JOIN MATABLE.ELEVE_STRUCTURE ON (MATABLE.ELEVE_STRUCTURE.ELEVE_ID = MATABLE.ELEVE.ELEVE_ID)
    INNER JOIN MATABLE.ELEMENT_STRUCTURE ON (MATABLE.ELEMENT_STRUCTURE.STRUCTURE_ID = MATABLE.ELEVE_STRUCTURE.STRUCTURE_ID)
    INNER JOIN MATABLE.ELEVE_PERSONNE_ADRESSE ON (MATABLE.ELEVE_PERSONNE_ADRESSE.ELEVE_ID = MATABLE.ELEVE.ELEVE_ID)
    INNER JOIN MATABLE.PERSONNE ON (MATABLE.ELEVE_PERSONNE_ADRESSE.PERSONNE_ID = MATABLE.PERSONNE.PERSONNE_ID)
    INNER JOIN MATABLE.ADRESSE ON (MATABLE.PERSONNE.ADRESSE_ID = MATABLE.ADRESSE.ADRESSE_ID)
     
    WHERE ( MATABLE.ETAB_UAJ.CODE_RNE = '0010207M'
        OR  MATABLE.ETAB_UAJ.CODE_RNE = '0010208P'
        OR  MATABLE.ETAB_UAJ.CODE_RNE = '0010209K'
        OR  MATABLE.ETAB_UAJ.CODE_RNE = '0110210B'
        OR  MATABLE.ETAB_UAJ.CODE_RNE = '0110211W'
        OR  MATABLE.ETAB_UAJ.CODE_RNE = '0410212V'
        OR  MATABLE.ETAB_UAJ.CODE_RNE = '0410213N'
        OR  MATABLE.ETAB_UAJ.CODE_RNE = '0410214P'
        OR  MATABLE.ETAB_UAJ.CODE_RNE = '0410214E'
        OR  MATABLE.ETAB_UAJ.CODE_RNE = '0410215M'
        OR  MATABLE.ETAB_UAJ.CODE_RNE = '0410216U'
        OR  MATABLE.ETAB_UAJ.CODE_RNE = '0610217J'
        OR  MATABLE.ETAB_UAJ.CODE_RNE = '0610218C'
        OR  MATABLE.ETAB_UAJ.CODE_RNE = '0610219D'
        OR  MATABLE.ETAB_UAJ.CODE_RNE = '0610220V')
     
    OR (    MATABLE.MEF.CODE_MEF = '31131211220'
        OR  MATABLE.MEF.CODE_MEF = '31131209220'
        OR  MATABLE.MEF.CODE_MEF = '31131210220'
        OR  MATABLE.MEF.CODE_MEF = '31120008220'
        OR  MATABLE.MEF.CODE_MEF = '31133419220'
        OR  MATABLE.MEF.CODE_MEF = '31133414220'
        OR  MATABLE.MEF.CODE_MEF = '31133415220'
        OR  MATABLE.MEF.CODE_MEF = '31133420220'
        ))
     
    ORDER BY
        MATABLE.ETAB_UAJ.CODE_RNE ASC ;
    @ bientôt et merci encore à tout ceux qui vont y réfléchir et aux autres aussi.

  2. #2
    Rédacteur
    Avatar de SQLpro
    Homme Profil pro
    Expert SGBDR & SQL, spécialiste Microsoft SQL Server
    Inscrit en
    mai 2002
    Messages
    18 532
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert SGBDR & SQL, spécialiste Microsoft SQL Server
    Secteur : Conseil

    Informations forums :
    Inscription : mai 2002
    Messages : 18 532
    Points : 43 272
    Points
    43 272

    Par défaut

    1) la cosmétique n'a pas sa place dans une requête SQL. Supprimez toutes les concaténations cosmétique et donnez les valeurs brutes. Faite la cosmétique sur l'outil adapté (programme d'IHM).
    2) de même avec les REPLACE cosmétique (tiret par exemple)
    3) de même pour les RTRIM/LTRIM...
    4) de même pour le TO_CHAR de la date
    5) utilisez le CASE plutôt que des REPLACE de REPLACE
    6) pour votre WHERE avec ses deux multiples OR, vous devriez construire deux tables temporaires indexées et faire des jointures.
    7) vérifiez que vous avez bien les index adéquats minimaux :
    • X1 ON MATABLE.ETAB_UAJ (CODE_RNE, ETAB_UAJ_ID)
    • X2 ON MATABLE.MEF (CODE_MEF, MEF_ID)



    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...
    * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    décembre 2018
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : décembre 2018
    Messages : 22
    Points : 6
    Points
    6

    Par défaut

    Merci bien pour ces réponses, je vais tenter de mettre tout ça en marche ;-)

    J'ai des choses IMPOSÉES, comme pour la date ou le remplacement de l'espace vide par un tiret (ça pas le choix) mais après si je peux coder plus propre je vais essayer en suivant tes conseils.

    En tout cas merci, je reviens quand j'ai avancé.

    @ plus tard.

  4. #4
    Rédacteur
    Avatar de SQLpro
    Homme Profil pro
    Expert SGBDR & SQL, spécialiste Microsoft SQL Server
    Inscrit en
    mai 2002
    Messages
    18 532
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert SGBDR & SQL, spécialiste Microsoft SQL Server
    Secteur : Conseil

    Informations forums :
    Inscription : mai 2002
    Messages : 18 532
    Points : 43 272
    Points
    43 272

    Par défaut

    Citation Envoyé par LudoV63 Voir le message
    J'ai des choses IMPOSÉES, comme pour la date ou le remplacement de l'espace vide par un tiret (ça pas le choix) .
    Vous avez toujours le choix face à l'imbécilité.
    1) refusez...
    2) expliquer !

    Si on vous dit de sauter d'une avion sans parachute, vous obéissez ?

    Si on vous demande des performances et qu'on vous refuse les moyens, c'est que vous avez affaire à un crétin. Faites en sorte qu'il se décrétinise !

    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...
    * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    décembre 2018
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : décembre 2018
    Messages : 22
    Points : 6
    Points
    6

    Par défaut

    Là pour le coup c'est le gouvernement qui me demande mdr .... du coup je vais juste accepter ce qu'il me demande ;-)

  6. #6
    Rédacteur
    Avatar de SQLpro
    Homme Profil pro
    Expert SGBDR & SQL, spécialiste Microsoft SQL Server
    Inscrit en
    mai 2002
    Messages
    18 532
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert SGBDR & SQL, spécialiste Microsoft SQL Server
    Secteur : Conseil

    Informations forums :
    Inscription : mai 2002
    Messages : 18 532
    Points : 43 272
    Points
    43 272

    Par défaut

    Je n'ai jamais vu un gouvernement parler…. Il y a donc soit un élu soit un fonctionnaire !

    La plupart sont incompétents… Les premiers parce qu'ils sont formatés pour assouvir leur soif de pouvoir au détriment de l'intérêt général, les seconds parce que le modèle du fonctionnarisme français est basé sur le principe d'incompétence de Peter assorti d'un je m'enfoutisme à la française…

    Note bien que le principe de désobéissance devant l'autorité est reconnus depuis l'après dernière guerre mondiale !
    http://resmilitaris.net/ressources/1..._inte_gral.pdf

    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...
    * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    décembre 2018
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : décembre 2018
    Messages : 22
    Points : 6
    Points
    6

    Par défaut

    Hahaha comment dire, ça fait genre 1 mois que je bosse dans la fonction publique donc .... N'ayant connu que du privé, je ne sais quoi trop te répondre ;-)

  8. #8
    Rédacteur
    Avatar de SQLpro
    Homme Profil pro
    Expert SGBDR & SQL, spécialiste Microsoft SQL Server
    Inscrit en
    mai 2002
    Messages
    18 532
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert SGBDR & SQL, spécialiste Microsoft SQL Server
    Secteur : Conseil

    Informations forums :
    Inscription : mai 2002
    Messages : 18 532
    Points : 43 272
    Points
    43 272

    Par défaut

    Ha mon pauvre…. Fuit donc cet univers malsain…. Rejoint les gilets jaunes !!! ;-)

    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...
    * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    décembre 2018
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : décembre 2018
    Messages : 22
    Points : 6
    Points
    6

    Par défaut

    L'un et l'autre ne sont pas incompatible :-)

  10. #10
    Rédacteur
    Avatar de SQLpro
    Homme Profil pro
    Expert SGBDR & SQL, spécialiste Microsoft SQL Server
    Inscrit en
    mai 2002
    Messages
    18 532
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert SGBDR & SQL, spécialiste Microsoft SQL Server
    Secteur : Conseil

    Informations forums :
    Inscription : mai 2002
    Messages : 18 532
    Points : 43 272
    Points
    43 272

    Par défaut

    Citation Envoyé par LudoV63 Voir le message
    L'un et l'autre ne sont pas incompatible :-)
    Docteur Jekyll et Mystère Hyde ????

    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...
    * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *

  11. #11
    Membre à l'essai
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    novembre 2018
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : novembre 2018
    Messages : 17
    Points : 24
    Points
    24

    Par défaut

    désoler je n'est pas le temps de lire ton code mais généralement si on doit faire la même action pour plusieurs variable (replace) c'est toujours mieux de tous mettre dans une transaction

  12. #12
    Futur Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    décembre 2018
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : décembre 2018
    Messages : 22
    Points : 6
    Points
    6

    Par défaut

    Salut,

    Ok je vais regarder de ce côté là si je trouve quelque chose d'intéressant.

    Merci et @+

Discussions similaires

  1. Simplification de requête
    Par Ludix_ dans le forum Langage SQL
    Réponses: 12
    Dernier message: 13/04/2012, 15h26
  2. Simplification de requêtes SQL
    Par XGuarden dans le forum VB.NET
    Réponses: 8
    Dernier message: 30/12/2010, 12h31
  3. Simplification de requête
    Par Louis-Guillaume Morand dans le forum SQL
    Réponses: 21
    Dernier message: 03/03/2008, 13h26
  4. simplification de requête
    Par GMI3 dans le forum Oracle
    Réponses: 3
    Dernier message: 03/05/2006, 15h47
  5. [Access] simplification de requètes.
    Par pmboutteau dans le forum Langage SQL
    Réponses: 14
    Dernier message: 02/02/2006, 10h04

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