2017-01-04 5 views
0

Ich habe drei TabellenInner Join auf 3 Tabellen mit dynamischen Spalten in SQL

  • EmployeeConfig
  • ComboValues ​​
  • EmployeeDetail

EmployeeConfig enthält:

ID CompanyId FieldName Label 
--------------------------------------- 
9 1   DEPARTMENT DEPARTMENT 
10 1   PTLOCATION Prof.Tax Location 
11 1   DESIGNATION Designation 

Combovalues enthält:

ID CompanyId FieldName ComboValue 
-------------------------------------------- 
11   1 DEPARTMENT Management 
12   1 DEPARTMENT Outsource 
13   1 DEPARTMENT Trims 
14   1 DEPARTMENT Logistics 
55   1 DESIGNATION Deputy Executive Director 
56   1 DESIGNATION Manager 
57   1 DESIGNATION Sr Manager - Trims 
58   1 DESIGNATION Manager - Exports 
59   1 DESIGNATION Planning Manager 

EmployeeDetail enthält:

ID CompanyId Code Name Category Department Designation 
------------------------------------------------------------- 
1   1 AI001 ABC  1 11  55 
2   1 S 003 MNO  1 12  56 
3   1 S 022 PQR  1 13  57 
4   1 S 030 XYZ  1 14  58 
  • EmployeeConfig enthält alle dynamischen Spalten
  • ComboValues alle Werte auf der EmployeeConfig Tabelle
  • EmployeeDetail enthält die ID ComboValues Tabelle basiert enthält

EmployeeDetail enthält dynamische Spalten basierend auf EmployeeConfig. Ich möchte dynamische Spaltenwerte durch ComboValues in EmployeeDetail Tabelle ersetzen.

habe ich versucht, diese Anfrage:

SELECT 
    E.Id, E.NAME, 
    C.ComboValue AS Designation, 
    Cdep.ComboValue AS department 
FROM 
    [Aquara7bc772839].EmployeeDetail AS E 
FULL JOIN 
    ComboValues C ON E.Designation = C.Id 
FULL JOIN 
    ComboValues Cdep ON E.Department = Cdep.Id 
INNER JOIN 
    EmployeeConfig Ex ON E.CompanyId = Ex.CompanyId 
WHERE 
    E.CompanyId = 1 

Aber obige Abfrage wird die erwartete Ausgabe unter nicht zurückkehren:

ID CompanyId Code Name Category Department  Designation 
------------------------------------------------------------------------- 
1   1 AI001 ABC  1  Management  Deputy Executive Director 
2   1 S 003 MNO  1  Outsource  Manager 
3   1 S 022 PQR  1  Trims   Sr Manager - Trims 
4   1 S 030 XYZ  1  Logistics  Manager - Exports 
+0

'ON ec.CompanyId = ex.CompanyId' was ist ec? – fafl

Antwort

5

Sie können ein Doppel wie diese verbinden tun:

select e.id, 
    e.companyid, 
    e.code, 
    e.name, 
    e.category, 
    c1.combovalue department, 
    c2.combovalue designation 
from EmployeeDetail e 
left join Combovalues c1 
on e.department = c1.id 
and c1.fieldname = 'DEPARTMENT' 
left join Combovalues c2 
on e.designation = c2.id 
and c2.fieldname = 'DESIGNATION'; 

Sie können die weiteren Join-Klauseln basierend auf anderen Beziehungen hinzufügen, die Sie haben (wie Firmen-ID usw.).

+0

Eigentlich ist mein Problem wie Abteilung eingereicht gibt es keine anderen Feld, die dynamische Mittel für jedes Mal Felder werden unterschiedlich sein, ich möchte ComboValue Felder dynamisch übergeben – Nilesh

+0

ComboValues ​​sind Verwendung definierte Felder – Nilesh

+0

FieldName wie "Abteilung, Bezeichnung, Standort" etc Wie das krank bekommen Aufzeichnungen – Nilesh