2010-08-17 6 views
0

Ceci est ma principale structure de la table:problème avec la procédure stockée?

alt text

La colonne d'expertise est une relation plusieurs à plusieurs avec une autre table qui a une liste des langues disponibles. Je voulais avoir une structure aplatie pour afficher tous les langages d'une personne, donc j'ai écrit une procédure stockée qui stringifie ces multiples expertises pour s'adapter à chaque utilisateur.

Lorsque j'ai appelé ce sp à partir de mon application wpf, il n'affiche pas les valeurs. J'ai essayé les «données de prévisualisation» du navigateur d'objet qui a montré seulement une rangée de ma table.

(Résultat attendu:

alt text

Quel est le problème avec mon approche

mon Sp:?

create procedure myView as 
Begin 
DECLARE @count INT,@finCount INT,@result varchar(50) 
SET @result =' ' 
SET @count = 1 
SELECT @finCount=COUNT(*) FROM usersProfile 
WHILE (@count <= @finCount) 
BEGIN 
    SELECT @[email protected]+langName+',' 
    FROM expertises 
    INNER JOIN ED_UPD_MERGE on expertises.id=ED_UPD_MERGE.idfrmED 
    INNER JOIN usersprofile on ED_UPD_MERGE.idfrmUPD=usersprofile.expertiseid 
    WHERE usersprofile.id [email protected] 

    SELECT usersProfile.id,usersProfile.fullname,usersProfile.screename ,usersProfile.age ,usersProfile.address ,usersProfile.emailid1 ,usersProfile.emailid2 ,usersProfile.isActive ,usersProfile.entryCreated ,usersProfile.entryModified ,usersProfile.experience ,roles.rolesName,@result as Expertise 
    FROM usersProfile   
    JOIN roles 
    ON usersProfile.roleid =roles.id 
    WHERE usersprofile.id [email protected] 
    SET @result= '' 
    SET @count = (@count + 1) 
    END 
End 

Répondre

1

Pouvez-vous poster le code WPF


Comme un sidenote:

Il serait un bien meilleur design d'avoir une table Expertise, puis mapper ce champ aux ID d'expertise. Donc, en gros:

Tableau:

  • ExpertiseID
  • ExpertiseDescription

Ensuite, dans votre domaine que vous utilisez actuellement l'expertise, vous allez créer une table de transition et de créer une relation la nouvelle table d'expertise.

+0

D'accord, ne stockez jamais de données dans un srtring délimité, si vous avez une relation plusieurs à plusieurs qui nécessite trois tables. – HLGEM

+0

Kyle: Je ne peux pas t'avoir. Elaborer pls :) – sarath

+0

PS: J'ai une table de bridge si c'est de quoi on parle. J'ai peur que je n'en ai pas parlé plus tôt (mais c'est évident de la JOINS dans mon sp). – sarath

0

La colonne langName autorise-t-elle des valeurs NULL? Si vous concaténez au moins une valeur NULL à la chaîne @result, vous obtiendrez un résultat NULL. Si NULLS sont autorisés dans la colonne langName, et en supposant que vous voulez ignorer les lignes avec langName vous pouvez changer:

SELECT @[email protected]+langName+',' 

à

SELECT @[email protected]+ ISNULL(langName+',', '') 

Cela va ajouter une chaîne vide à la fin de @result si langName est null; sinon, langName sera ajouté à la chaîne.

+0

NOpe il ne permet pas NULL et cela ne semble pas à mon problème :) – sarath

Questions connexes