2013-05-25 4 views
0

double possible avec:Utilisez la clé étrangère de plus d'une table dans SQL

Setting a foreign key to more than one table

OU

has_one with more than one possible foreign key column

J'ai une table (maintable) dans ma base de données sql qui a 5 field.One de ces champs (FID) est la clé étrangère de 5 autres tables dans la même base de données. L'autre champ (TypeID) contient un ID qui indique que la clé FID appartient à quelle table de ces 5 tables.Par exemple si FID = 1000 et TypeID = 1 pour un enregistrement dans MainTable cela signifie que 1000 est une clé primaire dans la table numéro un.

Maintenant, je veux joindre ces tables à une nouvelle table donc j'ai vue et utilisé la commande LEFT OUTER JOIN entre chacune de ces 5 tables et maintable:

Select * From 
     (Select * From 
     (Select * From 
      (Select * From 
      (Select * From MainTable LEFT OUTER JOIN Table1 ON MainTable.FID=Table1.ID AND MainTable.TypeID=1)AS Temp1 
LEFT OUTER JOIN Table2 ON Temp1.FID=Table2.ID AND Temp1.TypeID=2)AS Temp2 
    LEFT OUTER JOIN Table3 ON Temp2.FID=Table3.ID AND Temp2.TypeID=3)AS Temp3 
    LEFT OUTER JOIN Table4 ON Temp3.FID=Table4.ID AND Temp3.TypeID=4)AS Temp4 
     LEFT OUTER JOIN Table5 ON Temp4.FID=Table5.ID AND Temp4.TypeID=5 

1) Est-ce ce qui précède interroger le meilleur pour ce but? ?

2) Est-il possible de fusionner certaines colonnes du tableau de résultat dans une colonne spéciale, je veux dire que si quelque chose comme le résultat ceci:

field1  field2  field3  field4 
------------------------------------------- 
value1  NULL  NULL  NULL 
NULL  value2  NULL  NULL 
NULL   NULL  value3  NULL 
NULL   NULL  NULL  value4 

le convertir en quelque chose comme ci-dessous:

new_field 
------------ 
    value1 
    value2 
    value3 
    value4 

Répondre

0

Ma question a répondu en this url par CHill.

Questions connexes