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 :

[Debutant] Explication d'une requete : (+)


Sujet :

Oracle

  1. #21
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Citation Envoyé par orafrance
    pas de lisibilité mais un gain de temps lors du développement parce que c'est beaucoup plus facile à écrire... du moins c'est mon avis
    Purement une question d'habitude, je crois

  2. #22
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    surement... à ma décharge, je n'ai fait du SQL que sous Oracle... probablement que les personnes qui sont passées par SQL Server sont plus douées pour ce type d'écriture

    D'ailleurs, je suis incapable de réécrire la requête de Yorglaa... si en plus on ajoute un ORDER BY dans une sous-requête c'est l'enfer

  3. #23
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Citation Envoyé par Yorglaa
    par exemple, comment rendre "lisible" ceci en code normalisé ?
    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
    Select
            ...
    From
            T1
            ,(
                Select
                        T2.X
                        , nvl(T4.Y, 0)
                From
                        T2
                        , T3
                        , (
                           Select Distinct
                                    T4.id2
                                    , T4.Y
                           From
                                    T4
                          ) T4
                Where
                        T2.id = T3.id
                And     T2.id2 = T4.id2 (+)
                        T2.DateFrom = (
                                        Select
                                                max(TX.DateFrom
                                        From    T2 T2Bis
                                        Where   T2Bis.id = T2.id
                                      )
                And     T4.N > 5
            )   Z
    Where
            T1.X = T2.X
    And     Z.X = 2
    Je pourrais te dire que ta requête est tellement incompréhensible qu'il est impossible de la traduire en quoique ce soit, mais je ne tomberai pas dans cette facilité :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Select  ... 
    From   T1 INNER JOIN ( Select T2.X  , nvl(T4.Y, 0) 
                           From T2 INNER JOIN T3 ON T2.id = T3.id 
                                   LEFT OUTER JOIN ( Select Distinct T4.id2, T4.Y 
                                                     From T4 ) T4 ON T2.id2 = T4.id2
                           Where T2.DateFrom = (Select max(TX.DateFrom)
                                                From    T2 T2Bis 
                                                Where   T2Bis.id = T2.id ) 
                           And     T4.N > 5 ) Z ON T1.X = T2.X 
    Where  Z.X = 2
    PS là j'ai vraiment fais n'importe quoi, sans vérifier, moi non plus (mais c'est quand même ta requête)

    PPS : à la fin le T1.X = T2.X est forcément faux(peut-être T1.X = Z.X), et je ne m'en suis aperçu qu'avec ma version, pas en lisant la tienne (mais ce n'est peut-être qu'une question d'habitude )

  4. #24
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Citation Envoyé par orafrance
    surement... à ma décharge, je n'ai fait du SQL que sous Oracle...
    Moi aussi, je n'utilise SQLServer qu'épisodiquement, mais je n'ai jamais aimé le coup du (+), (je ne sais jamais où le mettre, moi non plus )

  5. #25
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    Mediat je le sens trop parti à nous faire un super tutoriel pour apprendre à faire du SQL au norme

  6. #26
    Membre éprouvé Avatar de Yorglaa
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    845
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2004
    Messages : 845
    Points : 931
    Points
    931
    Par défaut
    ahlà chapeau Mediat !

    mais comme orafrance, je suis un pur produit du SQL Oracle... ceci explique certainement mes préférences !

    malgrès tout, l'important est quand même de pouvoir "s'en sortir" des 2 façons...
    mais bon tout comme les ambidextres, il y atout de même forcément une des 2 méthodes qui nous semblera plus simple...
    probablement une question d'apprentissage initial...

    Il n'empêche que le coup du tuto pour le SQL normé... ouaaaah ! ça le ferais grave !

  7. #27
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Citation Envoyé par orafrance
    Mediat je le sens trop parti à nous faire un super tutoriel pour apprendre à faire du SQL au norme
    Citation Envoyé par Yorglaa
    Il n'empêche que le coup du tuto pour le SQL normé... ouaaaah ! ça le ferais grave !


    Association de malfaiteurs : c'est puni par la loi, non ?

    [Mode sérieux]
    Citation Envoyé par Yorglaa
    malgrès tout, l'important est quand même de pouvoir "s'en sortir" des 2 façons
    En fait, pour moi, l'important c'est de bien concevoir sa requête en terme de raisonnement ensembliste, après c'est toujours facile de transcrire, dans un idiome ou dans un autre, par contre dans cette phase de traduction du concept --> langage, j'ai toujours tendance à favoriser la lisibilité (celui qui n'a pas travaillé en TMA, sur des requêtes de bourrins ne peut pas comprendre ce que je veux dire )

    Pour le tuto sur le SQL normé, je pense que les articles de SQLPro répondent à ce besoin, par contre, je serais plus tenté par un tuto sur "les bonnes pratiques de l'écriture de requêtes", ce qui, pour moi, inclut le respect de la norme (autant que possible (il serait ridicule de se priver du CONNECT BY pour la seule raison que ce n'est pas normé)), mais va aussi vers quelques règles simple de disposition, d'indentation, de casse etc. Si il y a une demande, je ne suis pas opposé à l'idée de m'y coller
    [/Mode sérieux]

  8. #28
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    il y a toujours une demande

    Perso, en TMA (enfin, maintenant c'était plutôt optimisation) j'aurais beaucoup de mal à maintenir la requête que tu nous as sortie

    Remarque également qu'il n'y a pas de fonctions analytiques dans la norme non plus

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [debutant] creation d'une requete sur 3 table + group by !?
    Par christophebmx dans le forum Développement
    Réponses: 1
    Dernier message: 06/04/2008, 18h17
  2. [osql][debutant] resultat d'une requete dans un fichier
    Par Merfolk dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 14/06/2006, 17h12
  3. [Debutant] Aide sur une requete normée
    Par Wisefool dans le forum Oracle
    Réponses: 2
    Dernier message: 14/04/2006, 18h41
  4. [Debutant]Correction d'une requete normée svp
    Par Wisefool dans le forum Langage SQL
    Réponses: 3
    Dernier message: 24/01/2006, 10h54
  5. [debutant]Problème avec une requete ....
    Par MichMich29 dans le forum Langage SQL
    Réponses: 7
    Dernier message: 27/07/2005, 17h19

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