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

MS SQL Server Discussion :

Utilisation des vues.


Sujet :

MS SQL Server

  1. #1
    Candidat au Club
    Inscrit en
    Mars 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Utilisation des vues.
    Bonjour à tous,

    je débute quasiment avec SQL Server 2005 et l'on me demande de créer un modèle de rapport à partir d'une vue.

    Je crée une vue sur ma base dans Management Studio et là je rencontre un problème : ma requête comporte un "outer apply" qui fait appel à une fonction sensée me retourner un jeu de résultats et j'obtiens l'erreur suivante : "The outer apply sql construct or statement is not supported".

    Peut-on utiliser des fonctions avec les vues ? Sinon comment contourner le problème (j'ai pensé à créer une autre vue qui correspondrait à ma fonction, mais les pbs de performance sont épouvantables).

    Merci d'avance à tous ceux qui pourront m'éclairer.

  2. #2
    Membre émérite Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Points : 2 845
    Points
    2 845
    Par défaut
    Bonjour,

    Est-ce qu'on peut savoir en gros ce que ta fonction dans l'OUTER APPLY est sensée faire ?

    (c'est ma photo)
    Paku, Paku !
    Pour les jeunes incultes : non, je ne suis pas un pokémon...

    Le pacblog : http://pacmann.over-blog.com/

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    480
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 480
    Points : 357
    Points
    357
    Par défaut
    Citation Envoyé par Sedor29 Voir le message
    j'ai pensé à créer une autre vue qui correspondrait à ma fonction, mais les pbs de performance sont épouvantables

    Fais voir la requête qui construis ta vue, peut-être qu'un INDEX judicieux ou deux pourront résoudre ton problème
    Arrêtez de poster des liens! Expliquez! (ça évite les erreur HTTP 404)

    L'homme est plus fort que la machine... ne renoncez jamais


  4. #4
    Candidat au Club
    Inscrit en
    Mars 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Bonjour et merci pour vos réponses.

    Ma requête construisant ma vue est du type :

    SELECT DISTINCT
    GRC.Name AS Cate, GES.Name AS St, GF.Description AS Fu,
    FEO.UIN, GEF.Mnemonic, FEO.CK AS cKy, GEF.Name,
    GDR.Name AS DN, FEO.OD, FEO.EOId,
    Result.Name AS RVN, Result.Value AS RVV
    FROM FEO
    INNER JOIN GEF ON
    FEO.PN = GEF.PN AND
    FEO.CK = GEF.CK
    INNER JOIN GF ON
    GEF.PN = GF.PN AND
    GEF.FID = GF.ID AND
    GEF.PN = GF.PN AND
    GEF.FID = GF.ID
    INNER JOIN GES ON
    GEF.PN = GES.PN AND
    GEF.SN = GES.Name AND
    GEF.PN = GES.PN AND
    GEF.SN = GES.Name OUTER APPLY
    dbo.MaFonction(FEO.EOId) as Result
    UNION
    SELECT ......................................................



    Désolé pour les noms de table, j'ai volontairement mis des abréviations.

    Ma fonction repose sur une requête qui pour chaque "FEO.EOId" me retourne plusieurs couples :
    FEO.EOId 1 - (nom1 - valeur1, nom2 - valeur2, ..., nomn - valeurn)
    FEO.EOId 2 - (nom1 - valeur1, nom2 - valeur2, ..., nomn - valeurn)
    ....
    FEO.EOId n - (nom1 - valeur1, nom2 - valeur2, ..., nomn - valeurn)

  5. #5
    Candidat au Club
    Inscrit en
    Mars 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Bonjour et merci pour vos réponses.

    Ma requête construisant ma vue est du type :

    SELECT DISTINCT
    GRC.Name AS Cate, GES.Name AS St, GF.Description AS Fu,
    FEO.UIN, GEF.Mnemonic, FEO.CK AS cKy, GEF.Name,
    GDR.Name AS DN, FEO.OD, FEO.EOId,
    Result.Name AS RVN, Result.Value AS RVV
    FROM FEO
    INNER JOIN GEF ON
    FEO.PN = GEF.PN AND
    FEO.CK = GEF.CK
    INNER JOIN GF ON
    GEF.PN = GF.PN AND
    GEF.FID = GF.ID AND
    GEF.PN = GF.PN AND
    GEF.FID = GF.ID
    INNER JOIN GES ON
    GEF.PN = GES.PN AND
    GEF.SN = GES.Name AND
    GEF.PN = GES.PN AND
    GEF.SN = GES.Name OUTER APPLY
    dbo.MaFonction(FEO.EOId) as Result
    UNION
    SELECT ......................................................



    Désolé pour les noms de table, j'ai volontairement mis des abréviations.

    La fonction utilisée avec le OUTER APPLY repose sur une requête qui pour chaque "FEO.EOId" me retourne plusieurs couples :
    FEO.EOId 1 - (nom1 - valeur1, nom2 - valeur2, ..., nomn - valeurn)
    FEO.EOId 2 - (nom1 - valeur1, nom2 - valeur2, ..., nomn - valeurn)
    ....
    FEO.EOId n - (nom1 - valeur1, nom2 - valeur2, ..., nomn - valeurn)

  6. #6
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 772
    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 772
    Points : 52 737
    Points
    52 737
    Billets dans le blog
    5
    Par défaut
    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
    SELECT DISTINCT GRC.Name AS Cate, GES.Name AS St, GF.Description AS Fu,
           FEO.UIN, GEF.Mnemonic, FEO.CK AS cKy, GEF.Name,
           GDR.Name AS DN, FEO.OD, FEO.EOId,
           Result.Name AS RVN, Result.Value AS RVV
    FROM   FEO
           INNER JOIN GEF 
                 ON FEO.PN = GEF.PN AND
                    FEO.CK = GEF.CK
           INNER JOIN GF 
                 ON GEF.PN = GF.PN AND
                    GEF.FID = GF.ID AND 
                    GEF.PN = GF.PN AND   --> redondant !!!
                    GEF.FID = GF.ID      --> redondant !!!
           INNER JOIN GES 
                 ON GEF.PN = GES.PN AND
                    GEF.SN = GES.Name AND
                    GEF.PN = GES.PN AND    --> redondant !!!
                    GEF.SN = GES.Name      --> redondant !!!
           OUTER APPLY dbo.MaFonction(FEO.EOId) as Result
    UNION
    SELECT
    Normal que votre requête soit un veau, il y a déjà des redondances de jointures.

    De plus une fonction tables est très lente comparée à une jointure avec une table physique. De plus c'est un trou noir pour l'optimisation.

    Décrivez nous en détail (avec vos vraies tables) ce que vous voulez faire si vous voulez réellement de l'aide...

    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/ * * * * *

Discussions similaires

  1. Réponses: 2
    Dernier message: 03/06/2008, 15h40
  2. Utilisation des vues matérialisées Oracle
    Par yphilogene dans le forum Autres outils décisionnels
    Réponses: 6
    Dernier message: 14/12/2007, 00h48
  3. Fonctionnement et utilisation des vues matérialisées
    Par gOgHi dans le forum Administration
    Réponses: 7
    Dernier message: 19/10/2004, 14h29
  4. Utilisation des vues
    Par Andry dans le forum Débuter
    Réponses: 2
    Dernier message: 19/07/2004, 08h00
  5. [Crystal Report] Utilisation des vues de sql serveur
    Par Olivierakadev dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 15/11/2002, 17h44

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