2011-02-03 2 views
0

Supposons que nous ayons deux ensembles de données A, B qui ont une relation m à n.Trouver le mappage de manière efficace

A = {k1, k2, k3 .... kn} B = {g1, g2, g3 .......... gn}

Tous les éléments dans les deux ensembles sont alphanumériques. Maintenant, tuples une de chaque série A et série B sont stockés dans une table T.

par ex: - (k1, g2) (k2, g4) (k1, g3) (k4, g2) ... ... .. (kn, g)

le défi est de savoir quels sont les éléments « m » en mettre une carte aux éléments ce qui n 'dans la série B les plus efficaces façon.

Ex, disons que nous avons les ci-dessous tuples,

(k1, g1) (k1, g2) (k3, g1) (k3, g2) (K5, g1) (k5, g2)

l'o/p dont j'ai besoin est (k1, k3, k5) -> (g1, g2). Comme le mappage est de m à n, une sélection simple ne fonctionnera pas. S'il vous plaît laissez-moi savoir si vous avez besoin de plus amples clarifications

Puisque cette information est déjà dans la base de données, je préférerais si nous pouvons y arriver avec un peu de SQL.

Aide grandement appréciée.

Merci à l'avance ...

+1

Je ne sais pas comment la table stocke les tuples ou si je comprends bien, mais, n'avez-vous pas déjà cette information? s'il y a une table avec les tuples, disons, tuple_table avec tuples (kn, gm), et que vous voulez que l'élément k (provenant de l'ensemble A) soit mappé avec l'élément g (provenant de l'ensemble B) le tuple_table le fait? – chahuistle

+0

Merci de votre intérêt. Question mise à jour – MnM

Répondre

0

Vous pouvez souvent résoudre des problèmes comme celui-ci en utilisant un agrégat, et un groupe par clause.

Par exemple, si votre nom de la table est T alors:

select T.item1, concat(T.item2, ", ") from T group by T.item1 

Vous donne qui Item1 les cartes au point 2. de commutation ne puis encore Item1 et article 2 autour pour trouver item2 cartes pour ITEM1.

+0

Merci Charles. J'utilise MS SQL 2008 et je ne trouve pas la fonction 'Concat'. Ai-je manqué quelque chose ou avons-nous un autre moyen d'y parvenir? – MnM

+0

Salut MnM, je ne suis pas sûr de savoir comment le faire en MS SQL, apparemment concat de chaînes n'est pas intégré, de sorte que vous devez écrire votre propre fonction. jetez un coup d'oeil à ce lien http://forums.aspfree.com/microsoft-sql-server-14/sql-aggregate-function-that-combines-like-concat-73073.html –

+0

Merci Charles. J'ai créé un fichier UDF. http://msdn.microsoft.com/en-us/library/ms131056.aspx http://www.projectdmx.com/tsql/owconcatenate.aspx Je me suis dit que cela pourrait être plus facile à maintenir si nous conservons la logique dans le code pour l'écrire en SQL. – MnM

Questions connexes