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

Développement SQL Server Discussion :

Appel d'une fonction dans un select


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2014
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Indre (Centre)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2014
    Messages : 20
    Par défaut Appel d'une fonction dans un select
    bonjour,

    dans un sql j'ai plusieurs jointures
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT table00
    FROM table11
    LEFT JOIN table22
    LEFT JOIN table33
    etc
    etc
    et je ne sais pas comment appeler une fonction pour récupérer/afficher son résultat dans ma requête principale.

    si je lance ma fonction de cette façon : SELECT [dbo].[return_comments] (48597) as commentaire, je récupère bien 1 commentaire ( en fait c'est la "somme" de tous les commentaires du code 48597.
    est-ce qu'il est possible d'insérer cet appel de fonction (SELECT [dbo].[return_comments] (48597) as commentaire) dans un LEFT JOIN avec passage d'un paramètre à la place de la valeur 48597 ?
    quelque chose comme : LEFT JOIN(SELECT [dbo].[return_comments] table00.[TXID - Text identity] ?

    Merci à vous pour votre aide car je sèche lamentablement.

  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
    22 008
    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 : 22 008
    Billets dans le blog
    6
    Par défaut
    Rien ne vous empêche de faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT [dbo].[return_comments] (UneColonne) as commentaire 
    FROM MaTable
    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 averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2014
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Indre (Centre)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2014
    Messages : 20
    Par défaut
    d'abord merci pour la réponse.

    en faisant un select ça voudrait dire que c'est ma table principale or ce n'est pas le cas.
    c'est dans table00 que je récupère UneColonne.

  4. #4
    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
    Par défaut
    bonjour

    il faudrait être un peu plus clair, sinon il nous est impossible de vous aider.

    mettez la vrai requête, car la vous semblez spécifier un nom de table dans la partie SELECT, qui attend plutôt des colonnes...

  5. #5
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2014
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Indre (Centre)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2014
    Messages : 20
    Par défaut
    alors voici ma requête :


    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
    SELECT FSLEDG.[CONO - Environment] Environment
          ,FSLEDG.[DIVI - Company] Company
    	  ,FSLEDG.[CUNO - Customer] Customer
    	  ,OCUSMA.[CUNM - Name] 'Customer name'
          ,OCUSMA.[RESP - Responsible] Responsible
    	  ,FSLEDG.[CINO - Invoice number] Invoice
    	  ,FSLEDG.[CUCD - Currency] Currency
    	  ,FSLEDG.[CUAM - Foreign currency amount] 'Foreign curr amount'
    	  ,CONVERT(date,CONVERT(varchar(10),FSLEDG.[IVDT - Invoice date],112)) 'Invoice date'
    	  ,CONVERT(date,CONVERT(varchar(10),FSLEDG.[DUDT - Due date],112)) 'Due date'
    	  ,CASE WHEN [RVDT - Follow-up date] =0 THEN CONVERT(DATE,CONVERT(VARCHAR(10),'19000101',112)) 
    		ELSE CONVERT(date,CONVERT(varchar(10),FSLEDG.[RVDT - Follow-up date],112)) END  'Follow-up date'
    	  ,FSLEDG.[TEPY - Payment terms] 'Payment terms'
    	  ,FSLEDG.[ARAT - Exchange rate] 'Exchange rate'
    	  ,FSLEDX.[SEXI - GL additional information] 'GL information number'
          ,FGLEDG.[AIT2 - Accounting dimension 2] 'DESTIN/AUXIL'
    	  ,CSYTAB.[TX40 - Description] 'DESTIN/AUXIL descr'
    	  ,FSLEDG.[TXID - Text identity] 'Texd Id'
     
    -- filtre(s)	  
    	  ,FSLEDG.[RECO - Internal reconciliation code] 'Int reconciliation code'
    	  ,FSLEDG.[RMBL - Payment reminder stop] 'Blocage rel pmt'
    	  ,FSLEDX.[SEXN - GL information number] 'GL info number'
    	  ,FGLEDG.[AIT1 - Accounting dimension 1] 'Accounting dim 1'
     
    --
    -- Accounts Receivable
      FROM [M3_ODS_PROD].[M3JDTP300].[V_FSLEDG - TF: Accounts Receivable (ES)] FSLEDG
     
      LEFT JOIN [M3_ODS_PROD].[M3JDTP300].[V_FSLEDX - TF: Accounts Receivable (ES)] FSLEDX
    	ON	FSLEDG.[CONO - Environment]=FSLEDX.[CONO - Environment] AND FSLEDG.[DIVI - Company]=FSLEDX.[DIVI - Company]
    		AND FSLEDG.[YEA4 - Year]=FSLEDX.[YEA4 - Year] AND FSLEDG.[JRNO - Journal number]=FSLEDX.[JRNO - Journal number]
    		AND FSLEDG.[JSNO - Journal sequence number]=FSLEDX.[JSNO - Journal sequence number]
    			AND FSLEDX.[SEXN - GL information number]=231
    --
    -- General ledger
      LEFT JOIN [M3_ODS_PROD].[M3JDTP300].[V_FGLEDG - TF: General ledger (EG)] FGLEDG
    	ON	FSLEDG.[CONO - Environment]=FGLEDG.[CONO - Environment] AND FSLEDG.[DIVI - Company]=FGLEDG.[DIVI - Company]
    		AND FSLEDG.[YEA4 - Year]=FGLEDG.[YEA4 - Year] AND FSLEDG.[JRNO - Journal number]=FGLEDG.[JRNO - Journal number]
    		AND FSLEDG.[JSNO - Journal sequence number]=FGLEDG.[JSNO - Journal sequence number]
    		AND FSLEDG.[VSER - Voucher number series]=FGLEDG.[VSER - Voucher number series] 
    		AND FSLEDG.[VONO - Voucher number]=FGLEDG.[VONO - Voucher number]
    			AND FGLEDG.[AIT1 - Accounting dimension 1] != '51130'
    --
    -- System tables (market)
      LEFT JOIN [M3_ODS_PROD].[M3JDTP300].[V_CSYTAB - MF: System tables (CT)] CSYTAB
    	ON	FGLEDG.[CONO - Environment]=CSYTAB.[CONO - Environment] AND FGLEDG.[AIT2 - Accounting dimension 2]=CSYTAB.[STKY - Key value]
    		AND CSYTAB.[STCO - Constant value]='FRE1'
    --
    -- Customer
      LEFT JOIN [M3_ODS_PROD].[M3JDTP300].[V_OCUSMA - MF: Customer (OK)] OCUSMA
    	ON	FSLEDG.[CONO - Environment]=OCUSMA.[CONO - Environment] AND FSLEDG.[CUNO - Customer]=OCUSMA.[CUNO - Customer]
     
    --
    --  --> ici je voudrais récupérer le commentaire via ma fonction (SELECT [P300_ADM].[dbo].[return_comments] (48807) as commentaire)
    --
     
      WHERE
    		FSLEDG.[RECO - Internal reconciliation code]=0		/* GLS211/F : Lettrage intern */
    	AND	FSLEDG.[RMBL - Payment reminder stop] =1			/* ARS201/E : Blocage rel pmt */
    [/SIZE][/SIZE]

  6. #6
    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
    Par défaut
    et si je comprends bien, vous voulez remplacer, lors de l'appel de la fonction, la valeur en dur (48807) par la valeur d'une colonne (laquelle ?) d'une table (laquelle ?) .

    c'est bien ça ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. appel d'une fonction dans un select
    Par meri_mima dans le forum Développement
    Réponses: 2
    Dernier message: 15/10/2009, 16h56
  2. Réponses: 7
    Dernier message: 12/03/2006, 21h18
  3. Réponses: 6
    Dernier message: 16/11/2005, 20h43
  4. Appel d'une fonction dans uns boucle d'un tableau
    Par PrinceMaster77 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 04/02/2005, 15h37
  5. Réponses: 4
    Dernier message: 26/01/2005, 13h08

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