2016-08-23 4 views
-1

Ich versuche, Daten aus verschiedenen Tabellen zu erhalten. unten sind die Tabellenstruktur und Werte und was ich bisher versucht habe.Daten aus mehreren Tabellen gibt viele Datensätze zurück

uploadtable 
uploadId doctypeId 
1    1 
2    1 

MetadataTable 
Id doctypeId contentLable controlType fieldtype 
1  1  docnumber  Textbox  varchar 
2  1  expiryDate  Textbox  Datetime 

contentTable 
Id uploadId doctypeId Label  Value 
1  1  1   docnumber 123 
2  1  1   expiryDate 1/1/2016 

Wenn ich uploadId als 1 passiere in dem Zustand, dann sollte Output

uploadId contentLable controlType fieldtype Label  Value 
1   docnumber  Textbox  varchar docnumber 123 
1   expiryDate  Textbox  Datetime expiryDate 1/1/2016 

Eigentlich versucht, wie unten in meinem SQL Server O sein. Eigentlich brauche ich linq query. Wenn ich die richtige Ausgabe in SQL bekomme, dachte ich daran, es in LINQ umzuwandeln.

select 
    upd.uploadId, 
    meta.contentLable, 
    meta.controlType, 
    meta.fieldtype, 
    content.Label, 
    content.value 
from MetadataTable meta, 
    contentTable content, 
    uploadtable upd 
where upd.uploadId = content.uploadId 
and meta.doctypeId = content.doctypeId 
and upd.uploadId = 1 

Ich bekomme falsche Ausgabe wie unten.

uploadId contentLable controlType fieldtype Label  Value 
1   docnumber  Textbox  varchar docnumber 123 
1   docnumber  Textbox  varchar expiryDate 1/1/2016 
1   expiryDate  Textbox  Datetime docnumber 123 
1   expiryDate  Textbox  Datetime expiryDate 1/1/2016 
+0

Was hast du schon probiert? –

+0

Ich habe SQL-Abfrage oben gestellt. Ich habe versucht, SQL-Abfrage zu schreiben. Wenn ich eine korrekte Ausgabe in SQL bekomme, kann ich sie in LINQ konvertieren. –

+0

Sie müssen Joins verwenden, um die Beziehungen zwischen Ihren Tabellen zu verbinden. –

Antwort

0

Hoffe, das hilft. Ich denke, das SQL ausführen soll, was Sie brauchen:

select upd.uploadId, 
    meta.contentLable, 
    meta.controlType, 
    meta.fieldtype, 
    content.Label, 
    content.value 
from uploadtable upd 
join metadataTable meta 
on upd.doctypeId = meta.doctypeId 
join contentTable content 
on upd.doctypeId = content.doctypeId 
and upd.uploadId = content.uploadId <---------- This is what you are missing 
where upd.uploadId = 1 
  1. Vermeiden Sie aus mehreren Tabellen Auswahl from x,y,z mit - stattdessen richtigen join Syntax verwenden - es wird Ihre Fragen besser lesbar machen und verringert die Chancen von Verbindungsbedingungen zu vergessen.
  2. Wann contentTable Verbinden Sie müssen auch sowohl von der uploadId und der doctypeId beizutreten - sonst werden Sie eine Cartesian join/cross join bekommen wie Sie haben.
+0

@NIRANJAN G - Hilft es Ihnen, das Problem zu verstehen? –

+0

aber ich habe uploadId nicht in MetadataTable? Ich versuche. Vielen Dank –

+0

@NIRANJANG - Können Sie jetzt überprüfen? –

Verwandte Themen