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

ASP.NET Discussion :

Récupérer l'alias ou le nom des tables dans une jointure


Sujet :

ASP.NET

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2003
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 25
    Points : 13
    Points
    13
    Par défaut Obtenir l'alias ou le nom des différentes tables contenues dans une procédure stockée
    Bonjour,

    J'ai une requête avec une jointure dans une procédure stockée...

    Pour chaque champ que je récupère, j'aimerais connaitre sa provenance, c'est à dire de quel table est originaire le champ en question.

    Cela est-il possible ? Si oui comment ?

    J'utilise un SQLDataReader et GetSchemaTable sur celui-ci mais je n'ai rien trouvé de ce côté là.

    Merci.

    Voilà

  2. #2
    Membre régulier
    Inscrit en
    Février 2004
    Messages
    210
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 210
    Points : 103
    Points
    103
    Par défaut
    Salut,

    tu peux nous montrer ta Procédure Stockée ? parce que là j'ai pas bien compris ce dont tu avais besoin.

    A+

  3. #3
    Membre à l'essai
    Inscrit en
    Mars 2003
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 25
    Points : 13
    Points
    13
    Par défaut
    No souci... C'est vrai que c'était peu clair... Vais essayer de mieux présenter la bête...

    En gros voilà ce que j'ai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    CREATE PROCEDURE [dbo].[proc_selectl]
    	@val integer
    AS
    BEGIN
    	SET NOCOUNT ON;
    	SELECT tbl1.champ1, tbl2.champ1
    	FROM table1 tbl1
    	LEFT OUTER JOIN table2 tbl2
    		ON tbl1.fkey = tbl2.pkey
    	WHERE tbl1.champ2 = @val
    END
    A présent dans mon code VB j'ai un truc du style :

    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
     
            Dim Command As New SqlCommand
            Dim reader as SqlDataReader
     
            With Command
                .CommandText = "proc_select"
                .Parameters.AddWithValue("@key", key)
            End With
     
            reader = Command.ExecuteReader
     
            While reader.read()
                For i = 0 To (reader.FieldCount - 1)
                     Response.write(reader(i))
                End For
            End While
    Ce sont des exemples qui ne sont pas vraiment fonctionnel...

    Maintenant disons que je veuille faire un machin qui ressemble à ça :

    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
     
            Dim Command As New SqlCommand
            Dim reader as SqlDataReader
     
            With Command
                .CommandText = "proc_select"
                .Parameters.Clear
                .Parameters.AddWithValue("@key", key)
            End With
     
            reader = Command.ExecuteReader
     
            While reader.read()
                For i = 0 To (reader.FieldCount - 1)
                     If reader(i) provient de la table1 Then
                         Response.write("champ de la table1 -> " & reader(i))
                     Else
                         Response.write("champ de la table2 -> " & reader(i))
                     End If
                End For
            End While
    En clair, comment je fais le test pour savoir si champ1 provient de la table1 ou de la table2 ? Comment faire mon test dans le If ? Faut-il que je multiplie mes procédures stockées ? Quand on a environ 6 jointures, ce n'est pas un peu pénible ?

    Merci

    Voilà

  4. #4
    Membre à l'essai
    Inscrit en
    Mars 2003
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 25
    Points : 13
    Points
    13
    Par défaut
    Bon... J'ai trouvé une solution bricolage...

    Voilà ce que je fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    CREATE PROCEDURE [dbo].[proc_selectl]
    	@val integer
    AS
    BEGIN
    	SET NOCOUNT ON;
    	SELECT table1.champ1 AS [table1.champ1], 
                        table2.champ1 AS [table2.champ1]
    	FROM table1
    	LEFT OUTER JOIN table2
    		ON table1.fkey = table2.pkey
    	WHERE table1.champ2 = @val
    END
    Ensuite dans VB je fais :

    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
     
            Dim Command As New SqlCommand
            Dim reader as SqlDataReader
     
            With Command
                .CommandText = "proc_select"
                .Parameters.AddWithValue("@key", 1)
            End With
     
            reader = Command.ExecuteReader
            Dim s() AS String
     
            While reader.read()
                For i = 0 To (reader.FieldCount - 1)
                     s = reader.GetName(i).Split(".")
                     Response.write("champ de " & s(0) & " -> " & s(1))                 
                End For
            End While
    C'est vraiment pas la solution idéal mais c'est une solution qui marche...

    Si vous avez mieux, je suis preneur

    Voilà

Discussions similaires

  1. Nom des tables dans une base oracle
    Par toutounesan dans le forum VB.NET
    Réponses: 5
    Dernier message: 09/07/2011, 00h15
  2. Réponses: 18
    Dernier message: 13/06/2007, 16h17
  3. [Conception] Tri des tables dans une jointure
    Par Tonio_35 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 28/07/2006, 15h05
  4. Réponses: 12
    Dernier message: 02/03/2006, 14h13
  5. Réponses: 2
    Dernier message: 23/06/2005, 17h56

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