SQL Sélectionner plusieurs lignes dans une affiche de ligne

Ma situation est que j'ai deux tables. Je veux se joindre à eux et d'avoir des doublons apparaissent sur la même ligne. Se moquer de structures de la table donnée ci-dessous

MainTbl
Cols: MKey1,MKey2,MData1,MData2,MData3

SuppTbl
Cols: SPrimaryKey,SKey1,SKey2,SData1,SData2

Je veux LEFT JOIN MainTbl à SuppTbl. Cependant, SuppTbl contient des doublons de SKey1 et SKey2 touche combo.

Les résultats que je veux sont ci-dessous, Où "-#" indique la duplication nombre.

MKey1,MKey2,MData1,MData2,MData3,SData1-1,SData2-1,SData1-2,SData2-2

En substance, tous les champs de la jointure doit contenir sur une ligne en fonction d'un Key1 et Touche2.

TENTÉ DE RÉPONDRE PAR SEAN W

SELECT
    MainTbl.MKey1,
     MainTbl.MKey2,
    tcd.SData1 AS SData11,  
    tcd.SData2 AS SData22,
    tcr.SData1 AS SData12,  
    tcr.SData2 AS SData22
FROM MainTbl
LEFT JOIN SuppTbl tcd
ON MainTbl.MKey1=tcd.SKey1 AND MainTbl.MKey2=tcd.SKey2
LEFT JOIN SuppTbl tcr
ON MainTbl.MKey1=tcr.SKey1 AND MainTbl.MKey2=tcr.SKey2
WHERE tcd.SData1 < tcr.SData1

RÉSULTAT Sans Succès. Ne tirez pas sur tous les enregistrements.

  • Ne Table2 avoir un maximum de deux matchs?
  • Pas nécessairement. Il pourrait avoir un ou deux. Si il a en plus, c'est un cas rare, mais possible. J'ai des conditions qui pourraient limiter à deux. "OÙ DataD1 = 4" et "OÙ DataD1=22"
  • Ce parfum de SQL utilisez-vous?
  • Transact SQL
  • au mieux, vous vous retrouverez avec des lignes avec certaines colonnes ne pas peuplé, où il y a seulement 1 rejoindre. cette amende? Puis il suffit de faire 2 gauche rejoint à la deuxième table et de retourner les résultats.
  • Cela ne marchera pas. Il va créer des doublons de données de la colonne si aucune ligne existent dans de Table2.
  • Vous avez des colonnes et des et des exemples de données ne correspondent pas, et votre condition where (en commentaire) sera de retour à zéro des enregistrements pour les données de l'échantillon. Qui, combinée avec+ de 500 caractères sans saut de ligne est très difficile à lire et à présenter un obstacle pour les personnes qui veulent vous aider.
  • J'ai ajusté mon post pour être plus convivial. S'il vous plaît laissez-moi savoir si cela vous aide à comprendre ce que je cherche.
  • la dernière ligne de sql dans ma réponse ci-dessous devraient aborder les doublons. Sinon, vous devez expliquer ce que la logique serait utilisé pour éviter une double situation.
  • c'est un excellent outil pour la création des modèles des problèmes que vous essayez de résoudre dans sql - sqlfiddle